javascript - 更新标记簇

标签 javascript google-maps 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;
}

这将阻止标记显示在 map 上并且适用于实际的谷歌标记。但是我似乎无法找到如何更新页面加载时创建的集群。

最佳答案

为了更新集群,您应该首先调用 resetViewport(); 方法隐藏它,而不是使用 redraw(); 方法重新计算集群。

在标记上使用 setMap(null) 函数不会从 markerClusterer 中取消注册,要取消注册,您可以使用 removeMarkers(marker, opt_nodraw)removeMarkers(markers, opt_nodraw) 功能。根据我的经验,这些都是昂贵的操作。将 opt_nodraw 函数设置为 true 将强制不重绘,从而提高性能。

你可以先删除一堆 opt_nodraw 设置为 trueresetViewport(); redraw(); 的标记。 稍后手动。

关于javascript - 更新标记簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032544/

相关文章:

javascript - 如何在 Node.js 中将变量从 ejs 获取到 app.js?

javascript - jqGrid 不在网格中显示数据

android - 在 Google map MapView 中显示船只路线 - Android

python - 查找 pandas 数据框中列的经度和纬度

Android 标记点击功能

java - 使用 HashMap 的稀疏数组

javascript - D3 向缩放 map 添加元素

javascript - 为什么 Google Analytics 事件不触发/保存?

javascript - Node shell 脚本上没有这样的文件或目录

r - 使用 R 中的传单库绘制跨越国际日期变更线的路线