我已经成功地设置了 MarkerClusterer v3 和视口标记管理(执行 ajax 调用以仅收集视口可见的标记并在地图“空闲”时渲染这些标记)。
但是,当我将它们组合在一起时,它们似乎只在页面第一次加载而不是之后一起工作。
缩放或平移时,保留初始集群,并且整个地图的标记呈现为非集群状态,但保留先前集群的标记。
当您放大/缩小时,原始的聚集标记仍然可以正常运行,但是在更改视口边界时提供的新标记不会添加到它们或聚集在一起。
下面的代码:
function drawMap(swLat, swLng, neLat, neLng){
//Load the map data
$.ajax({
type: "POST",
url: "readMapInfo.php",
cache: false,
data:{S:swLat, W:swLng, N:neLat, E:neLng},
dataType: "xml",
success: function(data) {
if(markerArray.length >0){
for (i in markerArray) {
markerArray[i].setMap(null);
}
drawMarker(data); //takes the info provided and performs "markerArray.push(marker);"
mc = new MarkerClusterer(map, markerArray, clusterOptions);
} else {
drawMarker(data); //takes the info provided and performs "markerArray.push(marker);"
mc = new MarkerClusterer(map, markerArray, clusterOptions);
}
});
}
google.maps.event.addListener(map, 'idle', function() {
bounds = map.getBounds();
sw = bounds.getSouthWest();
ne = bounds.getNorthEast();
swLat = sw.lat();
swLng = sw.lng();
neLat = ne.lat();
neLng = ne.lng();
drawMap(swLat, swLng, neLat, neLng);
});