У меня есть карта google на моей веб-странице и используется geoxml3 для анализа слоев (со многими метками).Удалите старые слои 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 часа, это вызовет какое-либо отставание? Причина в том, что наложения фактически не уничтожены/удалены, они все еще находятся в памяти, просто мы теряем ссылку на нее (потому что теперь ссылаемся на новый слой).
Update
Я нашел некоторую информацию в Интернете, кажется, что я не придется беспокоиться об этой реализации.
«Так как JavaScript является сборщиком мусора, вам не нужно удалять сами объекты - они будут удалены, когда нет никакого способа ссылаться на них больше.»