Javascript 更新markerclusters
我有一个谷歌地图,上面有通过JSON提要提供的标记。由于涉及到大量的标记(超过600个),我使用MarkerClustererV3来加快速度。在我尝试更改通过选项按钮显示的标记之前,一切正常。我将此功能分配给单选按钮:Javascript 更新markerclusters,javascript,google-maps,maps,markerclusterer,Javascript,Google Maps,Maps,Markerclusterer,我有一个谷歌地图,上面有通过JSON提要提供的标记。由于涉及到大量的标记(超过600个),我使用MarkerClustererV3来加快速度。在我尝试更改通过选项按钮显示的标记之前,一切正常。我将此功能分配给单选按钮: function activities(markerarray,mapused,actType) { for(i in markerarray) { if(markerarray[i].activity[actType] == null) {
function activities(markerarray,mapused,actType) {
for(i in markerarray) {
if(markerarray[i].activity[actType] == null) {
markerarray[i].setMap(null);
}
else {
markerarray[i].setMap(mapused);
}
}
return markerarray;
}
这将阻止标记显示在地图上,并且对于实际的谷歌标记效果良好。但是,我似乎无法找到如何更新加载页面时创建的群集。我也遇到了同样的问题,从阅读源代码中可以看出。。。你不能 我将背景中的所有项目缓存为单个标记,并在需要时过滤它们
displayItems: function(infilter){
this.markerCluster.clearMarkers();
var matches = infilter.matches(this.markers);
this.markerCluster.addMarkers(matches);
}
this.markers是我的标记缓存,this.markerCluster是我的markerCluster对象-两者都是全局的
您不能直接编辑群集,但可以使用addMarker/removeMarker向markerCluster对象添加和删除标记,这将从群集中删除标记并重新绘制。要更新群集,应首先调用
resetViewport()代码>方法隐藏它,而不是使用重画()代码>重新计算群集的方法
对标记使用setMap(null)函数不会将其从markerClusterer注销,要注销,可以使用removeMarkers(marker,opt_nodraw)
或removeMarkers(markers,opt_nodraw)
函数。根据我的经验,这些都是昂贵的操作。将opt_nodraw
函数设置为true
将强制不重新绘制,这将提高性能
您可以首先删除一组标记,将opt_nodraw
设置为true
并设置为resetViewport()代码>重画()代码>稍后手动执行。谢谢@Dve,它成功了!我想我是在背对背地考虑这个问题。