【问题标题】:Leaflet Update Marker getLatLng传单更新标记 getLatLng
【发布时间】:2013-09-24 11:29:54
【问题描述】:

我想用 getLatLng 提醒我标记的所有位置。

这也很好用。

我通过以下代码将标记放置在地图上:

var marker = new L.Marker(e.latlng, {
        draggable:true,

        contextmenu: true,
          contextmenuItems: [{
             text: 'Marker entfernen',
              index: 0,
              callback: remove
            },{

              separator: true,
              index: 1
          }]
        });    
   map.addLayer(marker);

我通过这段代码得到了位置:

$( ".test" ).click(function() {
alert(marker.getLatLng());
});

所有添加标记的位置都会被提醒。

但是如果我通过这段代码删除一个标记:

map.removeLayer(marker);

已移除标记的位置仍显示在警报框中!

【问题讨论】:

    标签: javascript maps openstreetmap leaflet


    【解决方案1】:

    marker 的 Javascript 对象仍然存在,在您使用 map.removeLayer(marker); 将其删除后,它具有所有属性。为了快速修复,您可以在将其从图层中删除后简单地添加marker = null;。不过,您还必须在调用 alert 之前检查是否为 null。

    【讨论】:

    • 嘿,谢谢,这对我来说只有一个标记。但是我在地图上使用了多个标记,因此所有标记位置都将设置为空。可以将标记状态减少一吗?喜欢marker = x-1;
    • 如果您有多个标记,则必须分别跟踪它们。例如:var marker1 = ..., var marker2 = ... 等等,或者一个标记数组。否则,访问marker 的所有进一步代码都将引用最新的标记。例如map.removeLayer(marker) 不会删除除最后一个以外的任何标记等。
    • 是的,但标记不是默认标记。我通过单击地图生成它们,如何通过单击它们的地图来制作数组?对于一个数组,我需要一个大于 0 的变量,比如 for(i=0;i<items.length;i++){... 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 2023-03-22
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多