leaflet.pm编辑模式获取形状内的新坐标

时间:2018-11-03 17:00:08

标签: javascript leaflet

我正在使用传单js来构建带有一些图钉https://leafletjs.com/的地图,并且还允许绘制形状,例如多边形,圆形等。我也可以使用名为leaflet.pm https://github.com/codeofsumit/leaflet.pm的插件进行编辑。

这里有事件,但是在禁用编辑模式或完成拖动之后,没有任何事件会返还新位置的坐标。这是我迷上的事件;

map.on('pm:globaleditmodetoggled', function(e) {
    console.log(e);
});

此事件告诉我什么是必需的;

map.on('pm:create', function(e) {
    let obj = {
        type: e.shape,
        coordinates: e.layer.editing.latlngs[0][0]
    };

    $('#cords').val(JSON.stringify(obj))
});

有什么想法可以在编辑形状时获取更新坐标?

1 个答案:

答案 0 :(得分:2)

我是Sumit,Leaflet.pm的维护者

您可以做的是:侦听正在创建的事件并将编辑事件添加到新形状:

map.on('pm:create',(e) {
  e.layer.on('pm:edit', ({ layer }) => {
    // layer has been edited
    console.log(layer.toGeoJSON());
  })
});

当然,每当您向地图添加图层时,也可以将pm:edit事件应用于其参考。 此外,在创建图层或向地图添加图层时,您只需存储参考即可。编辑完成后,您只需检查参考的坐标即可(就像通常在传单中一样)。如果您只需要知道何时完成编辑,则可以使用pm:edit事件在编辑图层时捕获。

希望这会有所帮助