【问题标题】:MarkerClustererPlus memory leak when hiding clusters隐藏集群时的 MarkerClustererPlus 内存泄漏
【发布时间】:2013-06-25 11:19:39
【问题描述】:

我在一张地图上有 4 种不同类型的标记。目前幻灯片在每种类型中旋转,隐藏其他 3。每种不同类型的标记都有一个 MarkerClusterer 对象,因此它们不会聚集在一起。

我遇到的问题是 chrome 中的堆快照显示我每 5 分钟左右将使用的内存量增加约 2mb。这是我目前的代码:

function transitionMarkers() {
    if (isSlideShowActive) {
        for (var i = 0; i < markers.length; i++) {
            if (nutrientsArray[slideShowCounter] === markers[i].address.SOURCE_GROUP) {
                markers[i].setVisible(true);
            } else {
                markers[i].setVisible(false);
            }
        }
        for (var n in types.NUTRIENTS) {
            for (var sc in types.SOURCE_CODES) {
                if (nutrientsArray[slideShowCounter] === n) {
                    markerClusters[n][sc].setMap(map);
                } else {
                    markerClusters[n][sc].setMap(null);
                }
            }
        }
    }
    incrementSlideShowCounter();
}

标记有能力改变它们的可见性,因为它们会在一分钟内重新渲染,所以我不费心在它们上使用 setMap(null)。但是,标记集群没有此选项。当我检查堆快照时,我看到成千上万的对象看起来像这样:

[1076] :: pf @2451465 5 360 % 2 3360 %
b :: gi @2273271 2 120 % 170 5441 %
e :: function() @2454527 6 360 % 2 3000 %
proto :: pf @2338839 5 120 % 360 %
d :: "bounds_changed" @67519

看起来有成千上万的这些 bounds_changed 事件累积...我的地图只隐藏或显示标记,它不会四处移动、放大或缩小或类似的事情。

有什么想法吗?

【问题讨论】:

    标签: google-maps google-maps-api-3 google-maps-markers markerclusterer


    【解决方案1】:

    这些bounds_changed-事件将在添加ClusterIcon 时绑定到地图(当您调用markerClusters[n][sc].setMap(map) 时会一直发生)。

    当您调用markerClusters[n][sc].setMap(null) 时,ClusterIcons 将被移除,onRemove 方法也会清除绑定到ClusterIcon-instances 的所有侦听器,但 onRemove 方法不会移除绑定到地图的bounds_changed-events (你可以称之为错误)。

    因此,您可以自行修复错误并修改 markerclusterer.js 以便它也删除 bounds_changed-event,或者根本不调用 setMap(),而是您可以例如调用ClusterIcon-instances 的show()hide() 方法来显示或隐藏它们(应该会提供更好的性能)。

    【讨论】:

      猜你喜欢
      • 2011-05-12
      • 2021-01-04
      • 2020-05-25
      • 1970-01-01
      • 2012-10-14
      • 2013-10-27
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多