我的网页上有一个谷歌地图,并使用 geoxml3 来解析图层(带有许多地标)。
有一个计时器会每 10 秒触发一次 jquery 来拉取新的 .kml 文件。但是我想在解析新层之前删除旧层。
问题:移除/销毁的正确方法是什么?
我知道有一个geoXml.hideDocument();
,但它只会隐藏图层,它不会删除/销毁图层,对吗?(下面是 hideDocument() 实现)
refreshMap() - 隐藏上一层并显示新层
$.ajax({
url: url,
dataType: 'json',
type: 'get',
contentType: 'application/x-www-form-urlencoded',
data: "",
success: function (data, textStatus, jQxhr) {
if (data['success'] == 1) {
if (geoXml)
geoXml.hideDocument();
var src = data['kml'];
geoXml = new geoXML3.parser({
map: map,
suppressInfoWindows: false,
singleInfoWindow: true,
infoWindow: infowindow,
zoom : false
});
geoXml.parse(src);
geoXml.showDocument();
}
},
error: function (jqXhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});
即使这样可行,但我担心的是,如果它每 10 秒拉一次数据,如果页面打开 1 小时,是否会导致任何延迟?原因是叠加层实际上并没有被销毁/删除,它们仍然在内存中,只是我们失去了对它的引用(因为现在引用指向新层)。
更新
我在网上找了一些资料,看来我不必担心这个实现。
“由于 Javascript 是垃圾收集,因此您不需要自己删除对象 - 当无法再引用它们时,它们将被删除。”