2

我正在使用传单 js 构建带有一些引脚https://leafletjs.com/的地图,并且我还允许绘制形状,例如多边形、圆形等。我还可以使用名为 leaflet.pm 的插件对这些进行编辑https://github.com/codeofsmit/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))
});

任何想法如何在编辑形状时获得更新坐标?

4

1 回答 1

4

我是 Leaflet.pm 的维护者 Sumit

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

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

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

希望这可以帮助

于 2018-11-13T11:20:25.840 回答