问题描述
我正在Angular组件上使用传单,当用户从esri-leaflet反向地理编码中单击地图时,我正在显示标记,我想删除用户单击时添加的先前标记。
这是我的代码:
map.on('click',<LeafletMouseEvent>(e) => {
geocodeService.reverse().latlng(e.latlng).run( (error,result) => {
if (error) {
return;
}
L.marker(result.latlng).addTo(map).bindPopup(result.address.Match_addr).openPopup();
});
});
解决方法
将标记存储在变量中,然后在添加新标记之前再次单击地图后将其从地图中删除。
...
marker;
...
map.on("click",(e) => {
new ELG.ReverseGeocode().latlng(e.latlng).run((error,result) => {
if (error) {
return;
}
if (this.marker && map.hasLayer(this.marker))
map.removeLayer(this.marker);
this.marker = L.marker(result.latlng)
.addTo(map)
.bindPopup(result.address.Match_addr)
.openPopup();
});
});