Брошюра .locate опция часов ломается .locate после смены вкладки Ionic 3

1

У меня есть одна функция, называемая 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 я удаляю функцию просмотра, она работает.

Спасибо

Теги:
ionic-framework
leaflet
geolocation

1 ответ

0
Лучший ответ

Вы должны вызвать map.stopLocate() кроме map.remove():

Останавливает наблюдение за местоположением, ранее инициированное map.locate({watch: true})

Живая демонстрация: https://plnkr.co/edit/PKMPjfX3zD3QdWmEI0iX?p=preview (используйте кнопку "Toggle map" для имитации ваших сменных вкладок)

При этом верно, что Leaflet может автоматически это делать при использовании метода remove map. => Слияние в листе/Лист-лист PR # 5893

  • 0
    спасибо, может быть, они могут добавить его в следующих версиях. Кстати, у меня есть еще одна проблема. Эта ошибка возникает при первой загрузке. Это происходит после изменения вкладок. Если пользователь дважды щелкает где-то на карте, я получаю Не могу прочитать свойство '_leaflet_pos' из неопределенного ошибка. у тебя есть идеи ? Спасибо
  • 0
    Я думаю, причина в том, что я должен также удалить HTML-код, когда пользователь меняет вкладку, которая имеет вид <div id = "map" style = "width: 100%; height: 100%"> </ div>, и добавлять его, когда пользователь возвращается к карта
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню