gpt4 book ai didi

javascript - Google Maps JS v3 - 分离的 DOM 树 - 内存泄漏?

转载 作者:行者123 更新时间:2023-12-03 00:55:33 26 4
gpt4 key购买 nike

我有以下问题。我将通过以下代码通过 setMap(null) 选项删除对谷歌地图实例的所有引用,包括标记:

destroyMaps = function () {
leftMap = null;
window.map = null;
geocoder = null;
for (var i=0; i<window.rightMarkers.length; i++) {
window.rightMarkers[i].setMap(null);
window.rightMarkers[i] = null;
}
window.rightMarkers = null;
$("#map-canvas-right").remove();

for (var i=0; i<window.leftMarkers.length; i++) {
window.leftMarkers[i].setMap(null);
window.leftMarkers[i] = null;
}
window.leftMarkers = null;
$("#map-canvas-left").remove();

}

在我的整个代码中引用 leftMapwindow.map 的唯一内容是:

对于window.map

var marker = new google.maps.Marker({
position: myLatlng,
map: window.map,
icon: window.pins[keyword_category.category_name],
shadow: window.pins["Shadow"],

title:job.job_title
});
marker.job_type = keyword_category.category_name;
window.rightMarkers.push(marker);

对于leftMap

var marker = new google.maps.Marker({
position: myLatlng,
map: leftMap,
icon: window.pins[keyword_category.category_name],
shadow: window.pins["Shadow"],

title:job.job_title
});
window.leftMarkers.push(marker);

但是,在我分离的 DOM 树中,在创建 map 之前/销毁 map 之后进行比较时,仍然保留了 google map 图 block :

enter image description here

(右键单击 - 打开图像查看完整尺寸)

我该如何找出导致 DOM 泄漏的原因?

最佳答案

这是 Google Maps API v3 中的一个已知问题 - 即使纯粹创建和销毁 google.maps 对象(不创建标记)也会导致内存泄漏。请参阅Issue 3803: Bug: Destroying Google Map Instance Never Frees Memory

他们reproduce the issue通过创建一个简单的循环来创建和销毁 google.maps 对象。参见

http://jsfiddle.net/KWf4r/

按开始后,您将观察浏览器的内存增长,直到按停止。

该问题尚未解决,并且似乎没有可用的官方解决方法。当然有办法,但这不是一个干净的解决方法,显然可能会在下一个版本的谷歌地图 API 中停止工作 - 引用 the discussion :

I've actually managed to find a semi-workable fix by manually destroying a lot of the elements that google maps creates (and removing listeners). However, I am using a lot of undocumented things to do this (I had to check in the chrome inspector to see what to try to remove), so this doesn't seem the right way to go.

关于javascript - Google Maps JS v3 - 分离的 DOM 树 - 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21142483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com