2014-11-14 2 views
5

Seit Tagen versuche ich mein Problem zu lösen.Wie kann man nur ein Feature/Polygon gleichzeitig mit Leaflet bearbeiten?

Ich habe eine Polygonschicht von einem GeoJSON. Ich möchte meine Polygone mit dem Klickereignis bearbeiten. Wenn ich auf ein Polygon klicke, wird es editierbar, aber was ich will ist, dass wenn ich auf ein anderes Polygon klicke, das erste Polygon nicht mehr im bearbeitbaren Modus ist.

OpenLayers aber natürlich nicht Leaflet.

Hier ist ein Auszug aus meinem Code:

var editableLayers = new L.FeatureGroup().addTo(map); 
var polygon_json; 
    $.ajax({ 
    type: "GET", 
    dataType: "json", 
    url: "get_json.php", 
    success: function (response) { 
         meaux_json = L.geoJson(response, { 
         onEachFeature: onEachFeature  
         }); 
         } 
    }); 

//edit the targeted polygon 
function onEachFeature (feature, layer) { 
        editableLayers.addLayer(layer); 
        layer.on('click', function(e){ 
        e.target.editing.enable(); 
        }); 
       } 

Eine Person in der Lage war, es zu tun, aber ich habe Schwierigkeiten zu verstehen, wie: https://github.com/dwilhelm89/Ethermap

+0

Wenn ich in Ihrer Demo auf ein Polygon/eine Polylinie klicke, wird es editierbar. Wenn ich dann in der Demo auf ein anderes Poly klicke, wird die Bearbeitung des ersten Polygons deaktiviert, und das zweite Polygon wird zum Bearbeiten aktiviert. Es scheint, als ob es im Moment funktioniert, wie du willst. –

+0

danke für die Antwort, aber es ist nicht meine Demo, es ist eine andere Person, die das nicht ich tat ^^, und ich weiß nicht wie. – Revocyl

+0

Hey. Kannst du bitte deinen ganzen Code posten (einschließlich der Steuerelemente für die Verlosung von Flyern)? Ich versuche etwas Ähnliches zu tun, aber ich stecke fest. – user1919

Antwort

4

Ich glaube, Sie nah sind. In Ihrer onEachFeature-Funktion sollten Sie die angeklickte Funktion speichern, damit Sie die Bearbeitung im Click-Handler aktivieren/deaktivieren können.

var selectedFeature = null; 
//edit the targeted polygon 
function onEachFeature (feature, layer) { 
    editableLayers.addLayer(layer); 
    layer.on('click', function(e){ 
      if(selectedFeature) 
       selectedFeature.editing.disable(); 
      selectedFeature = e.target; 
      e.target.editing.enable(); 
    }); 
} 
+0

Ja, es funktioniert !!! Danke Mann = D – Revocyl

Verwandte Themen