Suite

OpenLayers 3 comment obtenir uniquement la fonctionnalité modifiée ?

OpenLayers 3 comment obtenir uniquement la fonctionnalité modifiée ?


J'ai un problème avec OL3 et c'est ol.interaction.Modify Event. Chaque fois que je modifie une entité, une seule, elle renvoie toutes les entités à l'intérieur de la couche. Actuellement, j'ai 77 entités (polygones) et je peux les modifier avec l'interaction de modification. À l'intérieur de la fonction de rappel, il renvoie l'événement avec le tableau de membres de fonctionnalité et cela semble être bogué :

modify.on('modifyend', function(e) { console.log('=== Modify end ==='); var modifiedFeature = e.features.item(0); //Pourquoi ai-je 77 fonctionnalités modifiées si je n'en ai touché qu'un ? // la taille de e.features est = 77 console.log(e.features); });

Connaissez-vous un moyen efficace d'obtenir la seule fonctionnalité modifiée ?


Je suppose que vous passez toutes les fonctionnalités à l'interaction de modification. C'est pourquoi il les renvoie tous (si vous ne fournissez pas votre code, je ne peux que deviner). Vous pouvez toujours utiliser une interaction de sélection, puis transmettre la fonctionnalité sélectionnée pour modifier l'interaction. Pour votre cas, vous pouvez parcourir vos fonctionnalités et vérifier la révision, chaque fois qu'une fonctionnalité est modifiée, son numéro de version sera incrémenté.

Alors fais quelque chose comme ça

var Caractéristiques modifiées ; modifier.on('modifyend', function(e) { var features = e.features.getArray(); console.log(features.length); for (var i = 0; i < features.length; i++) { var rev = features[i].getRevision(); if (rev > 1) { console.log("feature with revision:" + rev + "a été modifié"); modifiedFeatures.push(features[i]); } } });

vérifiez ce violon.


Voir la vidéo: Angular-Openlayers Part 4: Working with simple popup