Leaflet-geoman 如何正确检索 GeoJSON
Leaflet-geoman how to properly retrieve GeoJSON
我在使用 leaflet-geoman 提供的绘图控件时遇到了一些麻烦:
我想要达到的目标:
- 绘制多边形 --> ✅
- 从图层获取 geojson --> ✅
- 存储在数据库中 --> ✅
- 从数据库中检索 --> ✅
- 加载传单地图并能够对其进行编辑、裁剪和删除。 --> ✅ ?
- 从修改后的层获取新的 geojson,或者如果我有 2 个层并删除了一个,则只获取一个。 --> X
我无法从通过 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();
我在使用 leaflet-geoman 提供的绘图控件时遇到了一些麻烦:
我想要达到的目标:
- 绘制多边形 --> ✅
- 从图层获取 geojson --> ✅
- 存储在数据库中 --> ✅
- 从数据库中检索 --> ✅
- 加载传单地图并能够对其进行编辑、裁剪和删除。 --> ✅ ?
- 从修改后的层获取新的 geojson,或者如果我有 2 个层并删除了一个,则只获取一个。 --> X
我无法从通过 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();