按类别显示/隐藏markercluster?

时间:2013-09-30 15:02:19

标签: javascript google-maps markerclusterer

我使用markerCluster构建项目,一切正常,可以显示/隐藏标记。 但我的问题是当标记没有全部显示时,群集仍然计算所有标记。 例如:我有100个标记用于所有标记状态(显示和隐藏),实际显示60个,40个隐藏,群集必须总共60个,但我仍然得到群集计数100 ..

这是我的代码。

 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?

感谢

1 个答案:

答案 0 :(得分: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);
                }
        }
});

所以基本上你需要从群集中删除所有标记并仅重新聚类你想要显示的类别中的标记