我遇到了同樣的問題,想出了一個適用於我的解決方案,雖然它不是最優雅的方法。
使用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