0

我在 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();
  });

});
4

1 回答 1

1

将标记存储在变量中,然后在添加新标记之前再次单击地图后从地图中删除标记。

...
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();
  });
});

演示

于 2020-09-17T11:08:09.950 回答