【问题标题】:Leaflet-geoman how to properly retrieve GeoJSONLeaflet-geoman 如何正确检索 GeoJSON
【发布时间】:2020-08-27 17:51:24
【问题描述】:

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

我想要达到的目标:

  • 绘制多边形 --> ✅
  • 从层获取geojson --> ✅
  • 存储在数据库中 --> ✅
  • 从数据库中检索 --> ✅
  • 加载传单地图并能够对其进行编辑、裁剪和删除。 --> ✅ ?
  • 从修改后的层获取新的 geojson,或者如果我有 2 层并删除了一层,则只获取一层。 --> X

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

小提琴: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 函数在这种情况下不是我需要的,但我有点迷路了现在。非常感谢您的帮助。

【问题讨论】:

    标签: javascript leaflet leaflet-geoman


    【解决方案1】:

    您可以通过以下方式获取所有 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();
    

    【讨论】:

    • 工作就像一个魅力,非常感谢,我一直在挣扎一整天
    猜你喜欢
    • 2020-08-02
    • 2021-11-12
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    相关资源
    最近更新 更多