如何在谷歌地图v3中显示/隐藏MarkerCluster?

Gab*_*aru 5 javascript google-maps-api-3 markerclusterer

我需要为不同的mapTypes 使用不同的标记,我将它们推送到MarkerClusterer.

我用以下方法"隐藏"标记:

cluster.set("map", null);
cluster.resetViewport();
cluster.redraw();
Run Code Online (Sandbox Code Playgroud)

并"显示"他们:

cluster.set("map", MAP);
cluster.resetViewport();
cluster.redraw();
Run Code Online (Sandbox Code Playgroud)

问题是MarkerClusterer似乎不喜欢set("map", null); 它会引发错误TypeError: Object #<a MarkerClusterer> has no method 'remove'.如何以正确的方式显示/隐藏它们?

cod*_*aff 7

优雅的方式来清除群集

cluster.clearMarkers();
Run Code Online (Sandbox Code Playgroud)


Mic*_*ros 6

在Javascript API v3中,只需说:

clusterer.setMap(null);
Run Code Online (Sandbox Code Playgroud)

如果将地图设置回现有地图对象,则会重新显示群集.

clusterer.setMap( this.map );
Run Code Online (Sandbox Code Playgroud)

另外,我建议不要在你的例子中命名你的Clusterer'集群'.MarkerClusterer包含Cluster对象,它们是实际的聚簇标记,而不是ClusterER本身.


Gab*_*aru 0

我通过一点猴子补丁和一点黑客努力解决了这个问题。我仍在等待一个干净的答案,但这我的问题的解决方案,所以我也发布了这个:

MarkerClusterer.prototype.remove = function () {}

[..]

cluster.set("map", HIDDEN_MAP); // remove the clusterer
cluster.resetViewport();
cluster.redraw();
Run Code Online (Sandbox Code Playgroud)