Удалять старые слои geoxml3 при обновлении

У меня есть карта Google на моей веб-странице, и я использую geoxml3 для анализа слоев (со многими метками).

Существует таймер, который будет запускать 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 является сборщиком мусора, вам не нужно удалять сами объекты — они будут удалены, когда на них больше не будет возможности ссылаться».


person Jeffrey    schedule 30.10.2016    source источник


Ответы (1)


У меня есть тестовый пример, который эффективно делает это:

filename="http://www.geocodezip.com/dynamicmarkerkml.php";
geoXml.parse(filename);
setInterval("geoXml.hideDocument();geoXml.parse(filename)", 5000);

Я не вижу утечки памяти, и она работает у меня несколько дней (в какой-то момент, не в последнее время).

person geocodezip    schedule 30.10.2016