Quiero guardar los datos de geometría después de modificarlos, por lo que necesito un evento que se active después de que termine de modificar la función. Utilizo lo siguiente de esta publicación: el oyente modifica la interacción
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");
});
});
Pero este oyente dispara demasiadas veces en una sola modificación, y si estoy usando 'una vez' en lugar de 'encendido', solo se activa el primer pequeño cambio y no más, por lo que no está guardando el cambio real. Necesito algo como "changeend" o "modifyend" que se activará cuando termine de modificar la función, ¿qué puedo usar?
openlayers-2
javascript
openlayers
events
Jordán
fuente
fuente
Respuestas:
Si necesita un evento modifyend, ¿por qué no lo usa dentro de la interacción de modificación? (Supongo que usa una interacción de modificación) verifique esto
Este evento está disponible en las últimas versiones de ol3. En mi fragmento de código, supongo que solo modifica una característica a la vez (getArray () [0]). Si usa más de una característica para modificar a la vez, obtenga la matriz de características y agregue un bucle para una mayor manipulación. Al igual que:
fuente
modify
es el nombre de la interacción de modificación y que sumodifyend
código viene después de definir la interacción: primerovar modify = new ol.interaction.Modify({ features: select.getFeatures() });
y luego su código.select
es el nombre de mi interacción seleccionada. También un desarrollador puede hacere.features.getArray()[0].getGeometry().getCoordinates()
oe.features.getArray()[0].getGeometry().getType()
obtener las coordenadas o el tipo. Buena respuesta de todos modos amigo.e.features.getArray()[0].getId())
siempre devuelve la misma identificación, sea cual sea la función que estoy modificando. ¿Habría otra forma de saber qué función ha cambiado?