Как редактировать загруженный geoJson с помощью Leaflet

Я хочу получить данные полигона из базы данных, а затем отредактировать их. Я могу получить полигоны (хранящиеся как geojson), но не могу сделать их редактируемыми. Как я могу это сделать?

    var drawnItems = new L.FeatureGroup();
    map.addLayer(drawnItems);

    var drawControl = new L.Control.Draw({
        edit: {
            featureGroup: drawnItems
        }
    });
    map.addControl(drawControl);

    map.on('draw:created',function(e) {
    e.layer.addTo(drawnItems);
    });

    L.control.layers(baseLayers).addTo(map);    

    var oldPolygon = null;
    function showOnMap(rowid){
    if(oldPolygon != null){
    map.removeLayer(oldPolygon);
    }

    $.get("testdbextract.php?show="+rowid,function(data){
        var newPolygon = L.geoJson(data);
        newPolygon.addTo(drawnItems); // or drawnItems.addLayer(newPolygon);
        oldPolygon = newPolygon;
        }); 
    }

person Behatted    schedule 21.05.2016    source источник


Ответы (1)


В вашем примере вам нужно проанализировать полученные данные geojson, создать слои и инициализировать drawnItems.

Чтобы упростить задачу, вы можете создать слой GeoJson следующим образом:

// Create a GeoJson layer without adding it to the map
L.geoJson(geojsonFeatures, {
  onEachFeature: onEachFeature
});

// Take advantage of the onEachFeature callback to initialize drawnItems
function onEachFeature(feature, layer) {
  drawnItems.addLayer(layer);
}

Вот пример

В вашем коде это можно было бы использовать так

$.get("testdbextract.php?show="+rowid,function(data){
   L.geoJson(data, {
      onEachFeature: onEachFeature
   });
}); 
person YaFred    schedule 21.05.2016