Leaflet .locate watch 选项在更改选项卡 Ionic 3 后会中断 .locate
Posted
技术标签:
【中文标题】Leaflet .locate watch 选项在更改选项卡 Ionic 3 后会中断 .locate【英文标题】:Leaflet .locate watch option breaks .locate after changing tab Ionic 3 【发布时间】: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 功能不起作用。如果我删除监视选项它可以工作。
谢谢
【问题讨论】:
【参考方案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 代码并在用户返回地图时添加它 如果您需要有关该问题的帮助,请随时打开一个新问题,并提供重现问题的所有详细信息。以上是关于Leaflet .locate watch 选项在更改选项卡 Ionic 3 后会中断 .locate的主要内容,如果未能解决你的问题,请参考以下文章
在leaflet.js中定义了诸如“position:topleft”之类的控制选项在哪里?我可以创建position:bottomcenter吗?
当 reloadOnSearch 为 false 时,$location.search 上的 AngularJs $watch 不起作用