Leaflet .locate watch选项中断.locate更改选项卡Ionic 3

时间:2017-10-30 17:52:45

标签: javascript ionic-framework geolocation leaflet

我有一个名为loadmap(){}的函数,我在这里创建map.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函数工作。但如果我更改选项卡并返回到地图选项卡.locate函数不起作用。如果我删除监视选项它的工作。

由于

1 个答案:

答案 0 :(得分:0)

map.remove()以外,您必须致电map.stopLocate()

  

停止观看之前由map.locate({watch: true})

发起的位置

现场演示:https://plnkr.co/edit/PKMPjfX3zD3QdWmEI0iX?p=preview(使用"切换地图"按钮模拟更改标签)

话虽如此,Leaflet确实可以在使用remove map方法时自动执行此操作。 =>合并在PR Leaflet/Leaflet#5893