宣传单更新单一标记

时间:2018-04-17 22:08:27

标签: javascript leaflet openstreetmap

我有Leaflet OpenStreetMap地图,我在其中设置了新标记。我希望标记移动,这意味着清除所有先前的标记,并添加一个新标记。目前,新点击只会产生新的标记,并且不止一个会留在地图上。

如何在再次点击时清除所有标记?

initmap();
var home = new L.LayerGroup();

map.on('click', function(e) {
  // clear all markers here somehow
  document.getElementById("latFld").value = e.latlng.lat;
  document.getElementById("lngFld").value = e.latlng.lng;
  L.marker([e.latlng.lat,e.latlng.lng]).addTo(map);
  });

编辑:

我的原始标记不属于某个组。

L.marker([43.653409, -79.384112]).bindPopup('Original Home').addTo(map);

无论变量LayerGroup如何,我都在询问是否有办法清除所有标记,无论如何。它不是重复的。

1 个答案:

答案 0 :(得分:1)

将我的标记推入layerGroup,以便我可以将其用于清算:

var mymarkers = L.layerGroup([
    L.marker([43.677681,-79.389943]).bindPopup('Some place'),
    L.marker([<%= @mylat %>,<%= @mylon %>]).bindPopup('Original Home')
]);

L.control.layers(mymarkers).addTo(mymap);

mymap.on('click', function(e) {
    mymarkers.clearLayers();
    document.getElementById("latFld").value = e.latlng.lat;
    document.getElementById("lngFld").value = e.latlng.lng;
    L.marker([e.latlng.lat,e.latlng.lng]).bindPopup('New ome').addTo(mymarkers);
    $('#update').html("Values updated");
});

我期待一个自动保持所有标记的对象,但它并不存在。所以我不得不分配一个。