标记簇在设置可见性后没有改变

9

目前我有一组标记,我会像这样对它们进行聚类:

var markerCluster = new MarkerClusterer(map, cm_mapMarkers);

但是我也有一套过滤器,可以将标记设置为可见或不可见。但是,当我使用setvisible(false)将标记设置为不可见时,聚类计数并没有改变。
所以我寻找了一些方法来解决这个问题:
我尝试了以下方法:
MarkerClusterer.redraw();
MarkerClusterer.repaint();

两种结果都是:没有'repaint'方法和没有'redraw'方法。

以下是JSfiddle:

http://jsfiddle.net/tDYcX/30/

有人知道我做错了什么吗?

提前感谢。

3个回答

23

我使用MarkerClustererPlus,并使用markerCluster.setIgnoreHidden(true); 和 markerCluster.repaint();来完成了它。


老兄!我找了好几周才找到这个解决方案。谢谢你。 - Patrick Lyver
markerCluster.repaint() 对我来说完美无缺,谢谢!!! - showtime

3
MarkerClusterer并没有为那种情况而设计。您想要做的最简单的方法是使用clearMarkers()然后使用与您筛选条件匹配的新标记数组addMarkers(markers)

MarkerClusterer 不关心/不注意标记的可见状态,它只使用位置。当一个聚类中只有一个标记时,该标记才会被添加到地图上。 - skarE
完美的答案,我之前对解决方案有问题。这个可以用。 - J. Langer

3

经过一番尝试,我找到了一个可行的解决方案,希望能对某些人有所帮助...

将你的标记群(markerCluster)和地图(mymap)保存在变量中。

接着循环遍历所有可用的标记,并像这样操作:

if (show) {
        markerCluster.addMarker(markers[i]);

        if (markers[i].getMap == null)
            markers[i].marker.setMap(mymap);
        showing++;
    } else {

        markerCluster.removeMarker(markers[i]);

        if (markers[i].getMap != null)
            markers[i].marker.setMap(null);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接