我遇到了同样的问题,想出了一个适用于我的解决方案,虽然它不是最优雅的方法。
使用leaflet.draw我收到一个新图层,我将其调用layer.toGeoJSON()将矩形保存到我的数据库。在页面的刷新,我拉那以GeoJSON表示回从我的数据库,并与存放:
var geojson = JSON.parse(geojson_string);
我试了一下第一是建立从点我自己Rectangle并将其添加到drawnItems。
var bounds = L.latLngBounds(geojson.geometry.coordinates);
var rect = L.rectangle(bounds);
drawnItems.addLayer(rect);
此代码没有抛出错误,但它也没有在地图上显示矩形。经过进一步调查,我发现layer.toGeoJSON()输出的坐标对和L.latLngBounds()所需的坐标对相反(即一个是[lat,lng],另一个是[lng,lat]),要创建的矩形,但完全在错误的位置。为了解决这个问题,我首先将该图层构建为一个GeoJSON图层,并生成一个多边形,然后使用该图像的边界来构造我的Rectangle。
var geojson_layer = L.GeoJSON.geometryToLayer(geojson);
var rect = L.rectangle(geojson_layer.getBounds());
drawnItems.addLayer(rect);
这成功创建了一个Rectangle,Leaflet.draw可识别并允许编辑工具正常工作。
我正在做同样的事情。你解决了吗?还有一个问题:你如何在GeoJSON输出中包含SRS信息 – jorgeas80
我没有解决问题atm :( – user1815190
为什么你将它添加到为leaflet.draw保留的featureGroup?为什么不把它添加为geojson覆盖? – sfletche