百度地图的基本知识与使用

一、解释

       LBS: LocationBusinessServer基于定义位置的商业服务

二、使用步骤:

1、登录注册,获取秘钥AK

 

2引入百度地图js

<script src="https:ilapi.map.baidu.com/api? v=1.0&&type=webgl&ak=你自己的AK"></script>

3创建地图的容器

<div id="container"></div>

4初始化地图

var map = new BMap.Map("container"")

5创建一个地图中心点

var point new BMap.Point(经度,纬度)

6设置中心点和滚轮缩放

map.enableScrollwheelZoom(true);

map.centerAncZoom(point, 15);鼠标滚轮缩放

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </style>
</head>

<body>
    <!-- 准备容器 -->
    <div id="container">
    </div>
</body>
<script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);
</script>
<ml>

三、地图的事件

1、绘制方法

 1、点

var point = new BmapGL.Marker(point)

2、线

var polyline = new BmapGL.Polyline(点的数组,线的参数)

3、面

var polygon = new BmapGL.Polygon(点的数组,面的参数)

4、圆

var circle = new BmapGL.Circle(点,米半径,圆的参数)

5、标记

new BMapGL.Label(`内容`,{point:位置,offset:new BMapGL.Size(10, -25) }

6、添加叠加

map.addOverlay(点/线/面)

7、移除

map.remveOverLay(点/线/面)

2、添加点及连线

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </style>
</head>

<body>
    <!-- 准备容器 -->
    <div id="container">

    </div>
</body>
<script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);

    // 添加一个点
    var marker = new BMapGL.Marker(point);
    // 添加覆盖物
    map.addOverlay(marker);
    var line = []
    var markers = []
    //监听事件
    map.addEventListener("click", e => {
        // 创建点
        var p = new BMapGL.Point(e.latlng.lng, e.latlng.lat);
        // 创建标记
        var m = new BMapGL.Marker(p);
        markers.push(m)
        // 添加标记
        map.addOverlay(m);
        line.push(p)
        // console.log(e);
    })
    map.addEventListener("dblclick", e => {
        // 创建点
        line.push(line[0]);
        // 创建标记
        var polyline = new BMapGL.Polyline(line, { strokeColor: "blue", strokeWeight: 2, strokeOpacity: 0.5, strokeStyle: 'dashed' });
        // 添加标记
        map.addOverlay(polyline);
        line = []
        markers.forEach(item => map.removeOverlay(item));
        markers = []
    })
</script>
<ml>

result

 

3、添加信息窗口

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </style>
</head>

<body>
    <!-- 准备容器 -->
    <div id="container">
    </div>
</body>
<script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);

    // 添加一个点
    var marker = new BMapGL.Marker(point);
    // 添加覆盖物
    map.addOverlay(marker);
    var opts = {
        width: 160,     // 信息窗口宽度
        height: 260,    // 信息窗口高度
        title: "Hello"  // 信息窗口标题
    }
    var infoWindow = new BMapGL.InfoWindow(`<img src='https://img1.baidu.com/it/u=1513139652,3813067304&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1667322000&t=d46a4401b2e1827104434d4b707a4ab5' width='180',height='180'>`, opts);  // 创建信息窗口对象
    map.openInfoWindow(infoWindow, map.getCenter());        // 打开信息窗口

    marker.addEventListener("click", e => {
        //单击显示
        map.openInfoWindow(infoWindow, point)
    })


</script>
<ml>

result

 

4、添加地图控件

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </style>
</head>

<body>
    <!-- 准备容器 -->
    <div id="container">

    </div>
</body>
<script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(116.404, 39.915);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);

    var scaleCtrl = new BMapGL.ScaleControl();  // 添加比例尺控件
    map.addControl(scaleCtrl);
    var zoomCtrl = new BMapGL.ZoomControl();  // 添加缩放控件
    map.addControl(zoomCtrl);
    var cityCtrl = new BMapGL.CityListControl();  // 添加城市列表控件
    map.addControl(cityCtrl);
</script>
<ml>

result 

5、添加标签

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </style>
</head>

<body>
    <!-- 准备容器 -->
    <div id="container">

    </div>
</body>
<script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);

    // 添加一个点
    var marker = new BMapGL.Marker(point);
    // 添加覆盖物
    map.addOverlay(marker);


    var label = new BMapGL.Label("前端学习基地", {//创建文本标注
        position: point,//设置标注的地理位置
        offset: new BMapGL.Size(0, 0) //设置标注的偏移量
    })
    map.addOverlay(label);//将标注添加到地图中

    var circle = new BMapGL.Circle(point, 1000, {
        strokeColor: 'green'
    })
    map.addOverlay(circle);
    label.setStyle({
        color: "red",
        fontSize: "32px",
        border: "2px solid #f00"
    })


</script>
<ml>

result

 

6、搜素

 

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </style>
</head>

<body>
    <input type="" onchange="search(this)" />
    <!-- 准备容器 -->
    <div id="container">

    </div>
</body>
<script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);

    // 添加一个点
    var marker = new BMapGL.Marker(point);
    // 添加覆盖物
    map.addOverlay(marker);

    var local = new BMapGL.LocalSearch(map, {
        renderOptions: { map: map }
    });
    function search(e) {
        local.search(e.value)
    }


</script>
<ml>

result

四、在vue中使用百度地图 

1. publicindex.htmlscript引入百度地图

2.在组件中定义data

  map: null,//地图

  point: null,//中心点

  marker: null,//标记

  keyword:"",//搜索关键字

  local:null,//搜索控件

<template>
    <div>
        <h1>百度地图</h1>
        <input type="text" v-model.lazy="keyword">
        <div id="map" ref="map"></div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            map: null,
            point: null,
            marker: null,
            keyword: '',
            local: null
        }
    },
    mounted() {
        //为什么第三方api需要加window
        //echarts 还是BMapGL都是挂载到window
        //如果直接使用在当前的组件里面没有导入这个BMapGL会报错,也会出来,js会向上查找
        //基本上第三方组件,都需要在mounted组件渲染完毕后在执行初始化(确保js已经加载完毕
        this.map = new window.BMapGL.Map(this.$refs.map);
        this.point = new window.BMapGL.Point(113.665, 34.784);
        this.map.centerAndZoom(this.point, 15);
        this.map.enableScrollWheelZoom(true)
        // this.map.setHeading(30);
        // this.map.setTilt(13);
        this.marker = new window.BMapGL.Marker(this.point);
        this.map.addOverlay(this.marker);
        this.local = new window.BMapGL.LocalSearch(this.map, {
            renderOptions: { map: this.map }
        });
    },
    watch: {
        keyword: {
            handler() {
                if (this.keyword === '') {
                    this.local.clearResults()
                    this.map.centerAndZoom(this.point, 15)
                } else {
                    this.local.search(this.keyword)
                }
            }
        }
    }
}
</script>

<style>
#map {
    width: 100%;
    height: 80vh;
}
</style>

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android地图开发可以使用百度地图开放平台或高德地图开放平台提供的API来实现。在使用百度地图开放平台进行开发时,可以在布局文件中添加一个地图控件,使其占满整个屏幕。例如,在activity_main.xml布局文件中,可以使用LinearLayout作为根布局,并在其中添加一个MapView控件,设置其宽高为match_parent,使其占满整个屏幕。\[2\] 在进行Android地图开发之前,需要安装配置好Java开发环境,并选择任意一款Android开发工具进行编程,推荐使用Android Studio。此外,还需要对Java基础知识有一定的了解和掌握。在开始之前,还需要导入定位及地图的相关jar包,可以使用gradle或maven仓库来管理依赖。\[3\] 总结来说,Android地图开发可以通过使用百度地图开放平台或高德地图开放平台提供的API来实现,需要安装配置好Java开发环境,并选择合适的开发工具进行编程。在布局文件中添加地图控件,并导入相关的jar包来实现地图功能。 #### 引用[.reference_title] - *1* *3* [Android实战开发—三种手机地图实现](https://blog.csdn.net/qq_53860947/article/details/124506398)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Android 百度地图开发详解](https://blog.csdn.net/CSDNLHCC/article/details/100095146)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值