百度地圖:maker拖動和縮放事件自動批量新增標註的解決方案
阿新 • • 發佈:2021-01-13
技術標籤:地圖開發
//地圖事件;
map.addEventListener("moveend", autoMaker);
map.addEventListener("zoomend", autoMaker);
function autoMaker() {
var cp = map.getBounds(); // 返回map可視區域,以地理座標表示
var sw = cp.getSouthWest(); // 返回矩形區域的西南角
var ne = cp.getNorthEast (); // 返回矩形區域的東北角
var zoom = map.getZoom(); //當前縮放級別
var swlng = sw.lng, swlat = sw.lat, nelng = ne.lng, nelat = ne.lat,
currShowCount = 0;//本次拖動或縮放已顯示的點數
for (var i = 0; i < points.length; i++) {
if (points[i].lng > swlng && points[i].lng < nelng && points[i].lat > swlat && points[i].lat < nelat) {
if (currMarkers['markers' + i] == undefined) {//判斷當前點是否已顯示在地圖上,顯示則無需重新繪製
if (zoom == 18 || currShowCount < 50) {//放大到最大層數後,則顯示當前可視區內所有點,鑑於層級較大顯示的攝像頭較少,因此不會出現卡頓情況
map. addOverlay(markers[i]);
currMarkers['markers' + i] = markers[i];//記錄已顯示的點
currShowCount++;//本次已顯示數加1
} else {
return;
}
}
}
}
}
Done!