0

我正在使用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?

谢谢

4

1 回答 1

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

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

于 2013-12-09T10:18:12.900 回答