【问题标题】:Leaflet .locate watch option breaks .locate after changing tab Ionic 3Leaflet .locate watch 选项在更改选项卡 Ionic 3 后会中断 .locate
【发布时间】:2017-10-30 17:52:45
【问题描述】:

我有一个名为 loadmap(){} 的函数,我在其中创建地图。我正在使用

加载此函数
 ionViewDidEnter() {
this.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 功能不起作用。如果我删除监视选项它可以工作。

谢谢

【问题讨论】:

    标签: javascript ionic-framework geolocation leaflet


    【解决方案1】:

    除了map.remove(),你还得打电话给map.stopLocate()

    停止观看之前由map.locate({watch: true})发起的位置

    现场演示:https://plnkr.co/edit/PKMPjfX3zD3QdWmEI0iX?p=preview(使用“切换地图”按钮模拟您不断变化的选项卡)

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

    【讨论】:

    • 谢谢,也许他们可以在下一个版本中添加它。顺便说一句,我还有一个问题。第一次加载时不会出现此错误。它发生在更改标签后。如果用户双击地图上的某个地方,我会得到无法读取未定义错误的属性“_leaflet_pos”。你有什么主意吗 ?谢谢
    • 我猜原因是当用户更改标签
      时我也应该删除 html 代码并在用户返回地图时添加它
    • 如果您需要有关该问题的帮助,请随时打开一个新问题,并提供重现问题的所有详细信息。
    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多