Don*_*ell 5 javascript maps google-maps markerclusterer
我有一个谷歌地图设置与通过JSON提供提供的标记.由于涉及大量标记(超过600个),我使用了markerclusterer v3来加快速度.一切正常,直到我尝试通过选项按钮更改显示的标记.我将此功能分配给单选按钮:
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;
}
Run Code Online (Sandbox Code Playgroud)
这将阻止标记在地图上显示,并且对于实际的Google标记工作正常.但是我似乎无法找到如何更新页面加载时创建的集群.
小智 6
为了更新集群,您应首先调用resetViewport();方法来隐藏它,而不是使用redraw();方法来重新计算集群.
在标记上使用setMap(null)函数不会从markerClusterer取消注册,取消注册可以使用removeMarkers(marker, opt_nodraw)或removeMarkers(markers, opt_nodraw)运行.根据我的经验,这些是昂贵的操作.设置opt_nodraw功能true将强制不重绘,这将改善性能.
你可以先删除了一堆带标记的opt_nodraw设置为true比resetViewport(); redraw();稍后手动.
我遇到了同样的问题,从我可以看出正在阅读源代码......你不能。
我将后台中的所有项目缓存为单独的标记,并在需要时过滤它们
displayItems: function(infilter){
this.markerCluster.clearMarkers();
var matches = infilter.matches(this.markers);
this.markerCluster.addMarkers(matches);
}
Run Code Online (Sandbox Code Playgroud)
this.markers 是我的标记缓存, this.markerCluster 是我的markerCluster 对象 - 两者都是全局的。
您无法直接编辑簇,但可以使用 addMarker/removeMarker 添加和删除标记到markerCluster 对象,这反过来会将它们从簇中删除并重新绘制。
| 归档时间: |
|
| 查看次数: |
3873 次 |
| 最近记录: |