在項目中常常會用到百度地圖的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