在项目中常常会用到百度地图的JS API,以下内容是自己在实践过程中遇到问题的简要总结:
如:已经创建了一个map实例,var map = new BMap.Map("allmap"),其中,"allmap"是节点id
1.设置城市中心点
- 在初始化地图中心点时,最好不要使用中文地址名称,而是使用坐标,像这样:
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
否则可能出现设置使点显示在最佳视野的语句不起作用的情况。
2.使所有标注点显示在最佳视野中
- map.setViewport(pointsArray);
其中:参数pointsArray是点(而不是覆盖物)的数组,点即通过new BMap.Point()语句实例得到的。
例如,通过如下方式得到点的数组:
var pointsArray = [];
pointsArray.push(new BMap.Point(parseFloat(经度), parseFloat(纬度)));
parseFloat是将其转换为浮点数
3.页面dom元素与地图上面覆盖物的联动
- 添加覆盖物,并创建数组存储覆盖物对象,再给dom节点添加鼠标移入移出事件,同时,通过索引来处理对应的覆盖物对象。(备注:当节点没有对应的坐标时,index就会无法正确对应)
var marker = new BMap.Marker(new BMap.Point(parseFloat(经度), parseFloat(纬度)));
var markerArray = [];
markerArray.push(marker);
$('#wrapper').off('mouseenter', 'a').on('mouseenter', 'a', function(ev) {
var ind = $(this).parents('tr').index();
//设置点的弹跳动画
pointsMarker[ind].setAnimation(BMAP_ANIMATION_BOUNCE);
});
$('#wrapper').on('mouseleave', 'a', function(ev) {
var ind = $(this).parents('tr').index();
//取消点的弹跳动画
pointsMarker[ind].setAnimation();
});
- 其中,.off('mouseenter', 'a')是防止事件重复绑定,造成多次执行的情况。
4.清空地图上面的所有覆盖物
- 语句:map.clearOverlays();
百度地图API链接:http://lbsyun.baidu.com/index.php?title=jspopular
类参考(详细api):http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html