刷新时删除旧的geoxml3层
Remove older geoxml3 layers when refresh
我的网页上有一个谷歌地图,并使用geoxml3来解析层(有许多placemark)。
有一个计时器,将触发jquery每10秒拉新的.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是垃圾收集,你不需要删除对象本身——它们会在没有办法的时候被移除不要再提及他们了。"
我有一个测试案例这有效地做到了:
filename="http://www.geocodezip.com/dynamicmarkerkml.php";
geoXml.parse(filename);
setInterval("geoXml.hideDocument();geoXml.parse(filename)", 5000);
不会泄漏我可以看到的内存,并且我已经让它运行了几天(在某个点,而不是最近)。
相关文章:
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何删除多行HTML排列中的空白
- 如何从rails中的代码中删除新行( )
- 删除对HTML元素的拖动
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 按顺序添加和删除类
- iframe正在添加标签,需要删除它们
- 如何在HTML输入字段中添加不可删除的后缀
- addData()从最新图表中删除.js 2.1.3-怎么了
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 删除CKEditor工具栏按钮,但不删除功能
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 正在删除node.js中已验证的网站
- 正在从页面中删除iframe
- 如何从 HTML 查询中删除项目
- 如何在iOS应用程序中从Firebase中删除超过6小时的数据
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 在不知道深度或父属性的情况下从对象中删除属性
- 刷新时删除旧的geoxml3层