我正在尝试创建一个具有群集的交互式 map ,当用户选中一个框时需要显示该群集,而在再次取消选中该框时则需要删除该群集。
到目前为止,一切正常,集群正常运行,但是我注意到了一个奇怪的行为,我无法解释和解决:每次取消选中该框并再次选中时,集群中显示的数字都会增加该区域中标记的数量(所以当我执行“clearMarkers”时,它将以某种方式永远不会重置为零)
这是有关功能的代码:
//Display or remove PREDICTED accident's markers.
function toDisplayPredictedAccidents ()
{
//If the checkbox is checked : Display all the PREDICTED accident's markers.
if(checkBoxPredicted.checked == true)
{
for (i = 0; i < predictedAccidentArray.length; i++)
{
marker = new google.maps.Marker
({
position: new google.maps.LatLng(predictedAccidentArray[i][1], predictedAccidentArray[i][2]),
icon : iconPredicted
});
markersPredicted.push(marker); //Put the created marker in an array.
//Create the pop-up when we click on the marker.
google.maps.event.addListener(marker, 'click', (function(marker, i)
{
return function()
{
infowindow.setContent(predictedAccidentArray[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
markerClusterPredicted = new MarkerClusterer(map, markersPredicted);
}
else
{
clearPredictedMarkers();
markerClusterPredicted.clearMarkers();
}
}
//clearMarkers and setAllMap are related and aim to REMOVE all the PREDICTED accident's markers.
function clearPredictedMarkers() {
setAllMapPredicted(null, markersPredicted);
}
function setAllMapPredicted(map, markersArray)
{
for (var i = 0; i < markersArray.length; i++)
{
markersPredicted[i].setMap(map);
}
}
任何人都知道如何解决此问题? :)
最佳答案
仅适用于正在互联网上搜索实际答案的人(因为此问题非常古老):
var markerCluster = new MarkerClusterer(map, markers);
markerCluster.clearMarkers();
这将删除markerCluster中的所有标记。一切都可以在这里找到:https://googlemaps.github.io/js-marker-clusterer/docs/reference.html¨
更新10.11.2020
js-marker-clusterer
已移动,并且不再维护旧的存储库。相反,您应该使用https://github.com/googlemaps/v3-utility-library