Ich möchte die Geometriedaten speichern, nachdem ich sie geändert habe. Daher benötige ich ein Ereignis, das nach Abschluss der Änderung ausgelöst wird, um das Feature zu ändern. Ich verwende Folgendes aus diesem Beitrag: Listener ändern Interaktion
var selected_features = select.getFeatures();
// when a feature is selected...
selected_features.on('add', function (event) {
// get the feature
var feature = event.element;
feature.on("change", function (event) {
logStatus(feature.getId() + " has been changed!\n");
});
});
Aber dieser Listener wird in einer einzigen Modifikation zu oft ausgelöst, und wenn ich "einmal" anstelle von "ein" verwende, wird nur die erste kleine Änderung und nicht mehr ausgelöst, sodass die tatsächliche Änderung nicht gespeichert wird. Ich benötige etwas wie "changeend" oder "modifyend", das ausgelöst wird, wenn ich mit dem Ändern der Funktion fertig bin. Was kann ich verwenden?
openlayers-2
javascript
openlayers
events
Jordan
quelle
quelle
Antworten:
Wenn Sie ein Änderungsereignis benötigen, warum verwenden Sie es nicht in der Änderungsinteraktion (ich denke, Sie verwenden eine Änderungsinteraktion), überprüfen Sie dies
Diese Veranstaltung ist in den neuesten Versionen von ol3 verfügbar. In meinem Code-Snip gehe ich davon aus, dass Sie nur eine Fetaure gleichzeitig ändern (getArray () [0]). Wenn Sie mehr als eine Fetaure gleichzeitig ändern, rufen Sie das Fetaures-Array ab und fügen Sie eine Schleife zur weiteren Bearbeitung hinzu. Wie so:
quelle
modify
der Name der Interaktion ändern ist und dass Ihrmodifyend
Code nach dem Definieren der Interaktion kommt: zuerstvar modify = new ol.interaction.Modify({ features: select.getFeatures() });
und dann Ihr Code.select
ist der Name meiner Select Interaction. Auch ein Entwickler kanne.features.getArray()[0].getGeometry().getCoordinates()
odere.features.getArray()[0].getGeometry().getType()
um die Koordinaten oder den Typ zu bekommen. Trotzdem eine nette Antwort, Alter.e.features.getArray()[0].getId())
immer die gleiche ID zurückgegeben wird, unabhängig davon, welche Funktion ich ändere . Gibt es eine andere Möglichkeit, um festzustellen, welche Funktion geändert wurde?