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'.如何以正确的方式显示/隐藏它们?
在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本身.
我通过一点猴子补丁和一点黑客努力解决了这个问题。我仍在等待一个干净的答案,但这是我的问题的解决方案,所以我也发布了这个:
MarkerClusterer.prototype.remove = function () {}
[..]
cluster.set("map", HIDDEN_MAP); // remove the clusterer
cluster.resetViewport();
cluster.redraw();
Run Code Online (Sandbox Code Playgroud)