我有一个名为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函数不起作用。如果我删除监视选项它的工作。
由于
答案 0 :(得分:0)
除map.remove()
以外,您必须致电map.stopLocate()
:
停止观看之前由
发起的位置map.locate({watch: true})
现场演示:https://plnkr.co/edit/PKMPjfX3zD3QdWmEI0iX?p=preview(使用"切换地图"按钮模拟更改标签)
话虽如此,Leaflet确实可以在使用remove
map方法时自动执行此操作。 =>合并在PR Leaflet/Leaflet#5893