У меня есть одна функция, называемая loadmap() {}, где im создает карту. Я загружаю эту функцию с помощью
ionViewDidEnter() {
this.loadmap();
}
Внутри loadmap у меня есть
this.map = leaflet.map("map").fitWorld();
вот как я инициализирую карту
Вот как я удаляю карту, когда пользователь меняет вкладку.
ionViewDidLeave(){
this.map.remove();
}
Это моя функция.locate:
var usermarker;
this.map.locate({
setView: true,
maxZoom: 120,
watch:true,
enableHighAccuracy:true
}).on("locationfound", e => {
if (!usermarker) {
usermarker = new L.marker(e.latlng).addTo(this.map);
} else {
usermarker.setLatLng(e.latlng);
}
}).on("locationerror", error => {
if (usermarker) {
this.map.removeLayer(usermarker);
usermarker = undefined;
}
});
Проблема в первый раз.locate function works.but, если я меняю вкладку и возвращаюсь к вкладке карты. Функция locate doesnt work.if я удаляю функцию просмотра, она работает.
Спасибо
Вы должны вызвать map.stopLocate()
кроме map.remove()
:
Останавливает наблюдение за местоположением, ранее инициированное
map.locate({watch: true})
Живая демонстрация: https://plnkr.co/edit/PKMPjfX3zD3QdWmEI0iX?p=preview (используйте кнопку "Toggle map" для имитации ваших сменных вкладок)
При этом верно, что Leaflet может автоматически это делать при использовании метода remove
map. => Слияние в листе/Лист-лист PR # 5893