首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新时删除旧的geoxml3层

刷新时删除旧的geoxml3层
EN

Stack Overflow用户
提问于 2016-10-30 07:21:01
回答 1查看 902关注 0票数 0

我有一个谷歌地图在我的网页上,并使用geoxml3解析层(与许多placemarks)。

有一个计时器将每10秒触发一个jquery来提取新的.kml文件。但是,在解析新层之前,我希望删除旧层。

问题:,什么是删除/销毁的正确方法?

我知道有一个geoXml.hideDocument();,但是它只隐藏了层,它不会删除/破坏该层,对吗?(下面是hideDocument()实现)

refreshMap() -隐藏前一层并显示新层

代码语言:javascript
复制
$.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是垃圾收集的,所以您不需要自己删除对象--当无法再引用对象时,它们将被删除。”

EN

回答 1

Stack Overflow用户

发布于 2016-10-30 16:21:34

我有一个测试用例,它有效地做到了这一点:

代码语言:javascript
复制
filename="http://www.geocodezip.com/dynamicmarkerkml.php";
geoXml.parse(filename);
setInterval("geoXml.hideDocument();geoXml.parse(filename)", 5000);

没有泄漏我能看到的内存,而且我已经运行了几天(有一段时间,最近没有)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40326855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档