2013-09-30 69 views
0

我使用markerCluster構建項目,一切工作正常顯示/隱藏標記.. 但我的問題是當標記不顯示全部,羣仍然計數所有標記。 例如:我有100標記的所有標記狀態(顯示&隱藏),實際上60顯示和隱藏40日,集羣必須完全60,但我仍然得到簇內計100 ..按類別顯示/隱藏markercluster?

這裏我的代碼。

function show(category) 
{ 

    for (var i = 0; i < gmarkers.length; i++) 
    { 
     if (gmarkers[i].mycategory == category) 
     { 
      gmarkers[i].setVisible(true);   
     }   
    } 

    var markerCluster = new MarkerClusterer(map, gmarkers); 
} 

如何讓羣集剛剛顯示60?

感謝

回答

0

我解決了這個用jQuery

HTML代碼,我選擇我的類別:

<div id="optionbar-r"><u>(Un)mark to hide/show markers</u><br> 
<form id="checkbox"> 
<input type="checkbox" name="status" value="1" checked>cat1<br> 
<input type="checkbox" name="status" value="2" checked>cat2<br> 
<input type="checkbox" name="status" value="3" checked>cat3<br> 
<input type="checkbox" name="status" value="4" checked>cat4<br> 
</form> 
</div> 

標記

var marker = new gm.Marker({ 
    position: placemark.latlng, 
    icon: placemark.style.icon, 
    category: stat 
}); 

的.js代碼中的標記獲取所選

//checkbox elements are in div optionbar-r 
var checkbox = document.getElementById("optionbar-r"); 
$ ("#optionbar-r").click(function() { 
     markerclusterer.clearMarkers();//clear clusters 
     var selected = new Array(); 
     //put every checked box into array 
     $('#optionbar-r input:checked').each(function() { 
       selected.push($(this).attr('value')); 
     }); 
     //iterate over markersArray and set visibility if category is in array 
     for(var i=0; i < markersArray.length-1; i++) { 
       if($.inArray(markersArray[i].category, selected) >= 0) { 
         markersArray[i].setVisible(true); 
         markerclusterer.addMarker(markersArray[i]);//recluster all visible markers 
       } else { 
         markersArray[i].setVisible(false); 
       } 
     } 
}); 

所以基本上你需要從簇中刪除所有的標記並且只需要從你想要顯示的類別中重新設置標記