[英]Add markers to Google Map when navigate the map
我在Google Map中有很多標記(大約3000個),它們在彈出窗口中帶有圖標和高級詳細信息。 這就是為什么地圖打開很晚, 所有標記也很晚加載的原因。 因為我從數據庫加載了所有標記列表,並一次用foreach循環顯示它們。
現在,我認為在導航(滑動)地圖時要部分加載標記 。
例如,如果我在區域1,我只能在區域1看到的標記,當我導航(滑動)地圖到區域2,以加載在區域2只標記
請提供任何想法,示例或鏈接。 Google Maps API是否有導航事件?
您可以注冊地圖事件以進行中心和縮放級別更改,然后加載標記(如果它們在當前視口中):
function loadMarker() {
// Get the center lat/lng of the map
var center = map.getCenter();
// Get the size of the map viewport
var bounds = map.getBounds(),
var cor1 = bounds.getNorthEast(),
var cor2 = bounds.getSouthWest(),
var cor3 = new google.maps.LatLng(cor2.lat(), cor1.lng()),
var cor4 = new google.maps.LatLng(cor1.lat(), cor2.lng()),
var width = spherical.computeDistanceBetween(cor1,cor3),
var height = spherical.computeDistanceBetween( cor1, cor4);
// Loop through your markers
for(var i=0; i < <size of your marker array>; i++) {
// Get the distance between the center of the map and your markers
var distanceFromMarker = google.maps.geometry.spherical.computeDistanceBetween(center, <marker lat/lng>);
if(distanceFromMarker <= width || distanceFromMarker <= height) {
<load marker>
}
}
}
// Register center and zoom level change events
google.maps.event.addListener(map, 'center_changed', loadMarker);
google.maps.event.addListener(map, 'zoom_changed', loadMarker);
您可以根據要求從數據庫(例如,在bounds_changed上)基於地圖的邊界請求標記細節。
最佳情況下,您的數據庫應支持空間查詢 (但不是必需的)
谷歌網站上有專門針對此問題的頁面,其中提供了多種提高性能的方法: https : //developers.google.com/maps/articles/toomanymarkers
特別是“視口標記管理”一章應包含一些有關如何實現所描述內容的有用信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.