我正在尝试创建一个具有群集的交互式 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.2020js-marker-clusterer已移动,并且不再维护旧的存储库。相反,您应该使用https://github.com/googlemaps/v3-utility-library

10-08 00:13