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