Leaflet-geoman 如何正确检索 GeoJSON

Leaflet-geoman how to properly retrieve GeoJSON

我在使用 leaflet-geoman 提供的绘图控件时遇到了一些麻烦:

我想要达到的目标:

我无法从通过 geoman 绘制控件所做的修改中获取新的 geojson。无论我做什么,我总是得到与开始时将数据加载到地图时相同的结果。

Fiddle: https://jsfiddle.net/pjkLr41q/34/

const shapes = [{
          "type": "Feature",
          "properties": {},
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [-3.701856, 40.422481],
                [-3.707092, 40.418593],
                [-3.70177, 40.417809],
                [-3.701899, 40.422873],
                [-3.701856, 40.422481]
              ]
            ]
          }
        }];
const geojson = L.geoJSON(shapes).addTo(map);


map.eachLayer((layer) => {
 if (layer.pm) {
   const geojson = layer.toGeoJSON();

   if (layer instanceof L.Circle) {
     geojson.properties.radius = 10;
   }

   shapes.push(geojson);
}});

我不确定是不是因为我加载数据的方式,直接使用 L.geoJSON(data) 或可能通过 eachLayer 函数不是我在这种情况下所需要的,但我我现在有点迷路了。帮助真的很感激。

您可以获得所有 Geoman 图层:L.PM.Utils.findLayers(map)

在下一个版本 2.7.0 中将有函数 map.pm.getGeomanLayers()map.pm.getGeomanDrawLayers()

因此您可以通过以下方式获取新的 geojson:

var layers = L.PM.Utils.findLayers(map);
var group = L.featureGroup();
layers.forEach((layer)=>{
    group.addLayer(layer);
});
shapes = group.toGeoJSON();