带有圆

时间:2017-08-23 14:04:36

标签: javascript event-handling leaflet

我想拖动我的标记,然后将圆圈显示在我离开标记的位置。但我无法完成它。我不明白为什么......以前的圈子消失但新的圈子没有出现。 这是我的代码:

...
var marker;
var circle;
var all;
mymap.on('click', function (e) {
  if (all) {
    mymap.removeLayer(all);
  }
  marker = new L.Marker(e.latlng,{draggable:true});
  circle  = new L.circle(e.latlng, {radius: 600});
   marker.on('dragend', function (e) {
   if (circle) {
    mymap.removeLayer(circle);
   }
   var newPos = e.target.getLatLng();
   circle  = new L.circle(newPos, {radius: 600});
    });

   all = L.layerGroup([marker, circle]);
   mymap.addLayer(all);
});
...

1 个答案:

答案 0 :(得分:0)

我已经解决了问题是在拖动事件之后圆圈的层没有与标记再次组合所以它没有在地图上显示。所以我必须要做到这一点包括在' dragend'内再次运行代码

all = L.layerGroup([marker, circle]);
   mymap.addLayer(all);

将新的圆圈再次与标记结合起来。现在它的工作完美。无需努力就可以发布。

所以完成的代码看起来像这样:

...

 marker.on('dragend', function (e) {
   if (circle) {
    mymap.removeLayer(circle);
   }
   var newPos = e.target.getLatLng();
   circle  = new L.circle(newPos, {radius: 600});
       all = L.layerGroup([marker, circle]);
       mymap.addLayer(all);
    });

   all = L.layerGroup([marker, circle]);
   mymap.addLayer(all);
});

...