编辑使用 leaflet.shapefile 上传的 shapefile

Editing a shapefile uploaded using leaflet.shapefile

我正在使用带有 Leaflet 的 Mapbox 来绘制、编辑和删除多边形等。也可能存在这样的情况,即用户可能拥有压缩的 shapefile 并想直接使用它,而不是绘制多边形。所以我正在使用 leaflet.shapefile 上传 shapefile 并将它们添加到地图中。

但是当我尝试使用 Leaflet Draw 控件编辑 shapefile 时,我收到一条错误消息 "i.editing is undefined"。我尝试将图层转换为 GeoJSON,然后将其添加到 featureGroup 以防万一(如下面的代码),看看是否有任何效果,但没有。

var layergeojson = layer.toGeoJSON();
featureGroup.addLayer(layergeojson);

这是我目前拥有的jsfiddle。我尝试在线研究以查看任何类似案例,但我无法找到。

是否可以使用 Leaflet Draw 控件编辑上传的 shapefile?

当您执行 var layergeojson = layer.toGeoJSON() 时,layergeojson 现在包含普通 GeoJSON 对象,而不是 Leaflet 层。

因此,featureGroup.addLayer(layergeojson) 应该会抛出一个错误(打开您的浏览器控制台)。相反,您应该使用 .addData() 方法:featureGroup.addData(layergeojson).

至于编辑生成的图层,可能与此有关:https://gis.stackexchange.com/questions/203540/how-to-edit-an-existing-layer-using-leaflet/203773#203773