Suite

OpenLayers 3 modifier l'événement de fin

OpenLayers 3 modifier l'événement de fin


Je souhaite enregistrer les données de géométrie après les avoir modifiées, j'ai donc besoin d'un événement qui se déclenche une fois la modification de la fonction terminée. J'utilise ce qui suit de ce post : auditeur modifier l'interaction

var selected_features = select.getFeatures(); // lorsqu'une fonctionnalité est sélectionnée… selected_features.on('add', function (event) { // obtient la fonctionnalité var feature = event.element; feature.on("change", function (event) { logStatus(feature. getId() + " a été modifié !
"); }); });

Mais cet écouteur se déclenche trop de fois en une seule modification, et si j'utilise 'une fois' au lieu de 'on', il ne déclenche que le premier petit changement et pas plus, donc il n'enregistre pas le vrai changement. J'ai besoin de quelque chose comme "changeend" ou "modifyend" qui se déclenchera lorsque j'aurai fini de modifier la fonctionnalité, que puis-je utiliser ?


Si vous avez besoin d'un événement de modification de fin, pourquoi ne l'utilisez-vous pas dans l'interaction de modification. (Je suppose que vous utilisez une interaction de modification) cochez cette case

modifier.on('modifyend',function(e){ console.log("l'identifiant de la fonctionnalité est",e.features.getArray()[0].getId()); });

Cet événement est disponible dans les dernières versions d'ol3. Dans mon extrait de code, je suppose que vous ne modifiez qu'une seule fetaure à la fois (getArray()[0]) . Si vous utilisez plus d'une fetaure pour modifier à la fois, récupérez le tableau fetaures et ajoutez une boucle pour une manipulation ultérieure. Ainsi:

modifier.on('modifyend',function(e){ var features = e.features.getArray(); for (var i=0;i

Voir la vidéo: OpenLayers Project Setup