百度地图API调用

调用百度地图的API可以非常方便的实现我们需要的地图的功能,今天研究了一下调用百度地图API,显示定位信息、地图标注、路径导航等问题处理起来真的很方便。功能很强大,调用也很方便, 可以实现的功能非常多,有一点要注意:调用API要有一个开发者密钥,申请过程十分简单。

  1. 申请ak:调用百度地图API,首先你需要得在官网注册一个帐号然后申请一个密钥,注册网址:http://lbsyun.baidu.com/,在打开网页的最下方可以申请密钥
  2. 如果只是想在浏览器及本地测试,创建应用类型选择为:浏览器端,Referer白名单输入:*
  3. 提交完成后,就会得到一个密钥,在调用百度地图API的时候需要将“你的密钥”替换为你申请得到的密钥

官方文档有很详细的说明和示例,可以参照示例将各个功能以及代码进行组合,实现你想要的效果,这里给出一个简单的 demo,简单的加了几个按钮,可以直接复制粘贴到本地 html 文件,用浏览器打开就可以看到效果。(记得替换密钥哦)

html 完整示例源码:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
        body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
        #allmap{height:600px;width:1200px;}
        #r-result{width:100%; font-size:14px;}
    style>
        
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥">script>   
    <title>百度地图调用title>
head>
<body>
    <div id="allmap" >div>
    <input type="button" onclick="$('#allmap div.anchorBL').hide();" value="移除地图LOGO和版权说明(不建议使用)"/> 
    <input type="button" onclick="addYourCopyright()" value="自定义版权说明"/> 
    <input type="button" onclick="showSZ()" value="深圳市区域轮廓"/> 
    <input type="button" onclick="showSH()" value="切换到上海市"/> 
    <input type="button" onclick="addWalking()" value="步行路线图" />
    <input type="button" onclick="addGeolocation()" value="定位控件" />
    <input type="button" onclick="addCities()" value="城市列表控件" />
    <input type="button" onclick="changeThemeDark()" value="切换显色主题" />
        <div id="r-result">
        <input type="button" onclick="add_control();" value="添加缩放控件" />
        <input type="button" onclick="delete_control();" value="删除缩放控件" />
        <input type="button" onclick="showOver()" value="显示带标注marker" />
        <input type="button" onclick="hideOver()" value="隐藏带标注marker" />
        <input type="button" onclick="marker.enableDragging();" value="可拖拽" />
        <input type="button" onclick="marker.disableDragging();" value="不可拖拽" />
        <input type="button" onclick="showVectorMarker()" value="显示VectorMarker" />
        <input type="button" onclick="hideVectorMarker()" value="隐藏VectorMarker" /><br>
        <input type="button" onclick="showYourMarker()" value="显示自定义Marker" />
        <input type="button" onclick="hideYourMarker()" value="隐藏自定义Marker" />
        <input type="button" onclick="addTenMarkers()" value="添加10个标注" />
        <input type="button" onclick="addTenRandomMarkers()" value="随机添加10个标注" /><br>

        城市名: <input id="cityName" type="text" style="width:100px; margin-right:10px;" />
        <input type="button" value="查询" onclick="theLocation()" />
    div>

body>
html>
<script src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js">script>
<script type="text/javascript">
    // 百度地图API功能
    var map = new BMap.Map("allmap");
    var point = new BMap.Point(114.04254,22.561866);
    map.centerAndZoom(point,15);

    // 初始化地图,用城市名设置地图中心点,显示比例级别
    function showSH(){map.centerAndZoom("上海",15); }

    function theLocation(){
        var city = document.getElementById("cityName").value;
        if(city != ""){
            map.centerAndZoom(city,15);      // 用城市名设置地图中心点,显示比例级别
        }
    }

    //设置地图样式 dark
    function changeThemeDark(){ map.setMapStyle({style : "dark" });}


    //鼠标滚动缩放
    map.enableScrollWheelZoom(true);



    //行政区域轮廓
    function getBoundary(){       
    var bdary = new BMap.Boundary();
    bdary.get("深圳市", function(rs){       //获取行政区域
        map.clearOverlays();        //清除地图覆盖物       
        var count = rs.boundaries.length; //行政区域的点有多少个
        if (count === 0) {
            alert('未能获取当前输入行政区域');
            return ;
        }
        var pointArray = [];
        for (var i = 0; i < count; i++) {
            var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
            map.addOverlay(ply);  //添加覆盖物
            pointArray = pointArray.concat(ply.getPath());
        }    
        map.setViewport(pointArray);    //调整视野  
        addlabel();               
    });   
    }

    //深圳行政区域轮廓
    function showSZ(){
         getBoundary();
    }
    //setTimeout(function(){
    //  getBoundary();
    //}, 2000);


    //百度地图级别有19级,级别 比例尺
    //  19级 20m
    //  18级 50m
    //  17级 100m
    //  16级 200m
    //  15级 500m
    //  14级 1km
    //  13级 2km
    //  12级 5km
    //  11级 10km
    //  10级 20km
    //  9级  25km
    //  8级  50km
    //  7级  100km
    //  6级  200km
    //  5级  500km
    //  4级  1000km
    //  3级  2000km
    //  2级  5000km
    //  1级  10000km


     //在地图上添加图片文字等信息(版权控件)
     //Copyright(id,content,bounds)类作为CopyrightControl.addCopyright()方法的参数
    var cr = new BMap.CopyrightControl({anchor: BMAP_ANCHOR_TOP_RIGHT});   //设置版权控件位置
    //添加版权控件
    function addYourCopyright(){map.addControl(cr); }
    var bs = map.getBounds();   //返回地图可视区域
    cr.addCopyright({id: 1, content: "我是自定义版权控件", bounds: bs});   

       // var cr=new BMap.CopyrightControl({anchor:BMAP_ANCHOR_TOP_LEFT,offset:new BMap.Size(0,0)});
       // map.addControl(cr);
        //cr.addCopyright({id:1,content:""});    //需要更改为你的图片地址和名称


       // 初始化地图, 设置中心点坐标和地图级别
    //map.centerAndZoom(new BMap.Point(116.4035,39.915),15); 
    //setTimeout(function(){
    //  map.setZoom(14);   
    //}, 2000);  //2秒后放大到14级


    var top_left_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT});// 左上角,添加比例尺
    var top_left_navigation = new BMap.NavigationControl();  //左上角,添加默认缩放平移控件
    var top_right_navigation = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL}); //右上角,仅包含平移和缩放按钮
    /*缩放控件type有四种类型:
    BMAP_NAVIGATION_CONTROL_SMALL:仅包含平移和缩放按钮;BMAP_NAVIGATION_CONTROL_PAN:仅包含平移按钮;BMAP_NAVIGATION_CONTROL_ZOOM:仅包含缩放按钮*/

    //添加控件和比例尺
    function add_control(){
        map.addControl(top_left_control);        
        map.addControl(top_left_navigation);     
        map.addControl(top_right_navigation);    
    }
    //移除控件和比例尺
    function delete_control(){
        map.removeControl(top_left_control);     
        map.removeControl(top_left_navigation);  
        map.removeControl(top_right_navigation); 
    }


     // 添加定位控件
  var geolocationControl = new BMap.GeolocationControl();
  geolocationControl.addEventListener("locationSuccess", function(e){
    // 定位成功事件
    var address = '';
    address += e.addressComponent.province;
    address += e.addressComponent.city;
    address += e.addressComponent.district;
    address += e.addressComponent.street;
    address += e.addressComponent.streetNumber;
    alert("当前定位地址为:" + address);
  });
  geolocationControl.addEventListener("locationError",function(e){
    // 定位失败事件
    alert(e.message);
  });
  //添加定位到地图
  function addGeolocation(){map.addControl(geolocationControl);}



  //城市列表
  function addCities(){
    var size = new BMap.Size(10, 20);
    map.addControl(new BMap.CityListControl({
    anchor: BMAP_ANCHOR_TOP_LEFT,
    offset: size,
    // 切换城市之间事件
    // onChangeBefore: function(){
    //    alert('before');
    // },
    // 切换城市之后事件
    // onChangeAfter:function(){
    //   alert('after');
    // }
    }));

  }



    var marker = new BMap.Marker(new BMap.Point(114.04254,22.561866)); // 创建点
    map.addOverlay(marker);  
    //marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画

    marker.disableDragging();// 不可拖拽

    //获取marker的位置
    marker.addEventListener("click",getAttr);
    function getAttr(){
        var p = marker.getPosition();       //获取marker的位置
        alert("marker的位置是" + p.lng + "," + p.lat);   
    }



    //创建小狐狸
    var pt = new BMap.Point(114.04111,22.561744);
    var myIcon = new BMap.Icon("http://lbsyun.baidu.com/jsdemo/img/fox.gif", new BMap.Size(300,157));
    var marker2 = new BMap.Marker(pt,{icon:myIcon});  // 创建标注
     // 将标注添加到地图中
     map.addOverlay(marker2);
     marker2.hide();
    function showYourMarker(){marker2.show();}
    function hideYourMarker(){marker2.hide();}


    var marker3 = new BMap.Marker(new BMap.Point(114.04000,22.561600));  // 创建标注
    map.addOverlay(marker3);   
    var label = new BMap.Label("我是文字标注哦",{offset:new BMap.Size(20,-10)});
    marker3.setLabel(label);
    marker3.hide();
    function showOver(){
        marker3.show();
    }
    function hideOver(){
        marker3.hide();
    }


    // 编写自定义函数,创建标注
    function addMarker(point){
      var marker = new BMap.Marker(point);
      map.addOverlay(marker);
    }
    // 随机向地图添加10个标注
    function addTenRandomMarkers(){
        var bounds = map.getBounds();
        var sw = bounds.getSouthWest();
        var ne = bounds.getNorthEast();
        var lngSpan = Math.abs(sw.lng - ne.lng);
        var latSpan = Math.abs(ne.lat - sw.lat);

        for (var i = 0; i < 10; i ++) {
            var point = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7));
            addMarker(point);
        }
    }

    // 向地图添加10个标注
    function addTenMarkers(){
        var longS = 114.04554;
        var latS = 22.561666;
        for (var i = 0; i < 10; i ++) {
             var point = new BMap.Point(longS + 0.001*i, latS + 0.0001*i);
             addMarker(point);

        }
    }



    //设置marker图标为水滴矢量图标
    var vectorMarker = new BMap.Marker(new BMap.Point(point.lng,point.lat-0.0003), {
    // 指定Marker的icon属性为Symbol
        icon: new BMap.Symbol(BMap_Symbol_SHAPE_POINT, {
        scale: 1.2,//图标缩放大小
        fillColor: "blue",//填充颜色
        fillOpacity: 0.8//填充透明度
            })
    });
    map.addOverlay(vectorMarker);
    vectorMarker.hide();
    function showVectorMarker(){vectorMarker.show();}
    function hideVectorMarker(){vectorMarker.hide();}
    vectorMarker.enableDragging();// 可拖拽
        //获取marker的位置
    vectorMarker.addEventListener("click",getAttr);
    function getAttr(){
        var p = vectorMarker.getPosition();       //获取vectorMarker的位置
        alert("vectorMarker的位置是" + p.lng + "," + p.lat);   
    }



    //步行线路图
    var walking = new BMap.WalkingRoute(map, { 
        renderOptions: { 
            map: map, 
            autoViewport: true 
        }
    });
    var start = new BMap.Point(114.038143,22.547901);
    var end = new BMap.Point(114.053495,22.548226);
    function addWalking(){ walking.search(start, end);}



script>

效果图:

你可能感兴趣的:(前端)