百度地图API入门使用

百度地图js开发API

本文将结合具体项目案例,带你初步认识百度地图API的使用方法

部分项目需求
  • 中间为地图区,地图区上显示的点位与左侧检索区对应
  • 配电箱状态为报警时,点位跳动,图标变为红色
  • 定时更新配电箱状态,界面上的点相应更新
  • 点击左侧检索结果的配电箱,或者点击地图区配电箱图标,在地图区显示配电箱详细信息
设计稿
百度地图API入门使用_第1张图片
效果图.jpg
具体操作
  1. 引入js


关于如何申请密钥请参照百度地图API密钥申请

  1. 初始化地图,设置中心点等参数。
var map = new BMap.Map("allmap");// 创建Map实例。
//'allmap'为html节点的id,建议放于body节点下
var pointCenter = new BMap.Point(120.204892, 30.161293); //创建点
map.centerAndZoom(pointCenter, 12); //中心点
map.enableScrollWheelZoom(true);  //支持鼠标滚动缩放

地图中心点也可以直接使用城市名称。后面的数字为深度,12表示市级深度

map.centerAndZoom('杭州', 12);
  1. 调用查询接口,返回配电箱列表信息,获取每个配电箱的经纬度,并在地图上创建点。如果配电箱状态为报警,则让该点跳动
var point = new BMap.Point(lo, la); //创建点
var marker = new BMap.Marker(point);  // 创建标注
map.addOverlay(marker);               // 将标注添加到地图中

if(该配电箱处于报警状态){
marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
}

  1. 在第一次获取配电箱列表后已经生成了所有的点,而点的坐标从始至终都是不变的,所以在更新状态的时候,并不需要重绘,只需要替换点的图标即可。
//第一次创建点,为其生成默认图标
var myIcon = new BMap.Icon("../statics/images/map/box0.png", new BMap.Size(300,157));   //创建Icon对象
marker = new BMap.Marker(point,{icon:myIcon});  // 创建标注,设置icon

//更新状态时,若状态改变,则替换图标
 if (//配电箱不在线) {
    var icon = marker.getIcon(); //获取icon对象
    icon.setImageUrl('../statics/images/map/box0.png'); //修改图标
 }
  1. 如果说页面内的点相对 较分散,可以使用点聚合
  • 首先是引入扩展链接


  • 调用markerClusterer类即可
var markers = [];
for (; i < MAX; i++) {
     pt = new BMap.Point(Math.random() * 40 + 85, Math.random() * 30 + 21);
     markers.push(new BMap.Marker(pt));
}
//最简单的用法,生成一个marker数组,然后调用markerClusterer类。
var markerClusterer = new BMapLib.MarkerClusterer(map,{markers:markers});
百度地图API入门使用_第2张图片
点聚合.png

若页面中点很多,会造成页面卡顿,这种情况不建议使用点聚合

  1. 为点注册点击事件,并创建信息窗口
var content = "
这是一个信息窗口内容
" var opts = { width : 250, // 信息窗口宽度 height: 80, // 信息窗口高度 title : "信息窗口" , // 信息窗口标题 enableMessage:true//设置允许信息窗发送短息 }; var infoWindow = new BMap.InfoWindow(content,opts); // 创建信息窗口对象 marker.addEventListener("click", function(){ map.openInfoWindow(infoWindow,point); //开启信息窗口 });
  1. 为多个点创建信息窗口
 var data_info = [[116.417854,39.921988,"地址:北京市东城区王府井大街88号乐天银泰百货八层"],
                 [116.406605,39.921585,"地址:北京市东城区东华门大街"],
                 [116.412222,39.912345,"地址:北京市东城区正义路甲5号"]
];
var opts = {
            width : 250,     // 信息窗口宽度
            height: 80,     // 信息窗口高度
            title : "信息窗口" , // 信息窗口标题
            enableMessage:true//设置允许信息窗发送短息
           };

for(var i=0;i
  1. 其他
    在完成核心功能后,还能在此基础上做一些优化
  • 将生成的所有点都显示在视图窗口内
map.setViewport(pointArray);
  • 选中某个配电箱,打开信息窗口,就将该配电箱移动至视图中央
map.panTo(point); //窗口移动到该点

持续更新

你可能感兴趣的:(百度地图API入门使用)