2014-04-10 163 views
1

我正在嘗試創建一個交互式地圖,其中包含當用戶選中某個框時需要顯示的羣集,並且當該框未被再次選中時將其刪除。 到目前爲止,一切運行良好,羣集工作正常,但我注意到了一個我無法解釋和修復的奇怪行爲:每次取消選中該複選框並再次檢查該複選框時,羣集中顯示的數字會遞增標記在該區域的量(所以它卻從來沒有被reseted爲零,當我做「clearMarkers」刪除markerClusterer中的標記

下面是有關函數的代碼:

//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); 
    } 
} 

任何人都知道如何解決這個問題? :)

+0

你沒有刪除'markersPredicted'標記但是從地圖上只是其分離。所以,下一次您將相同的標記放入數組並將它們全部顯示出來。 –

+0

好的,你可以指點我一種方法或技術從數組中刪除它們嗎? (我嘗試對數組上的所有元素執行setMap(null),但是這似乎沒有任何操作) –

回答

1
markerCluster.remove(myMarker); 

如果你有標記列表刪除只是做:

for(var i=0; i<markers.length; i++){ 
markerCluster.remove(markers[i]); 

}

+0

文檔狀態「markerCluster.removeMarker()」https://googlemaps.github.io/js- marker-clusterer/docs/reference.html – tempranova

4

剛的人誰是互聯網的實際回答有關搜索(由於這個問題是很老):

var markerCluster = new MarkerClusterer(map, markers); 

markerCluster.clearMarkers(); 

這將刪除markerCluster中的所有標記。

一切都可以在這裏找到:https://googlemaps.github.io/js-marker-clusterer/docs/reference.html

+0

這就是正確的答案 –

+0

這個答案效果很好 –