Supprimer / supprimer une entité de la couche vectorielle OpenLayers

15

J'ai une couche OpenLayers avec plusieurs vecteurs dessus. Je connais l'ID de fonctionnalité OpenLayers (par exemple OpenLayers.Feature.Vector_241) et je voudrais savoir comment supprimer cette fonctionnalité et uniquement cette fonctionnalité?

J'ai envisagé de les supprimer tous, puis de parcourir un tableau pour les redessiner, mais cela semble un peu inélégant et long.

J'ai essayé une variété de versions du code suivant:

layer.removeFeatures( featureID );

Et

layer.removeFeatures( [featureID] );

Et

layer.removeFeatures( {feature : featureID });

Etc...

Toute aide est la bienvenue!

Merci

C

CatchingMonkey
la source

Réponses:

20

Je ne pense pas qu'OpenLayers soit capable de supprimer une fonctionnalité en fournissant le featureID. Il semble qu'il ne peut supprimer une fonctionnalité qu'en fournissant une fonctionnalité ou un tableau de fonctionnalités:

layer.removeFeatures(featureObject);

Mais vous pouvez d'abord localiser la fonctionnalité, puis supprimer la fonctionnalité trouvée:

layer.removeFeatures(layer.getFeatureById(featureID));

Ou similaire si ce n'est pas l'OpenLayers FeatureID que vous avez, alors

layer.removeFeatures(layer.getFeatureBy('myId', myID));
Chau
la source
J'aime la pensée! Le problème est cependant que l'instruction "layer.getFeatureById (featureID))" renvoie null, et donc la removeFeature () ne fonctionne pas. Je suis sûr à 100% que j'ai les bons FeatureID ... d'autres réflexions?
CatchingMonkey
1
Grattez ça. J'utilisais le mauvais identifiant de fonctionnalité. J'utilise votre deuxième exemple et cela fonctionne parfaitement. Joli!
CatchingMonkey
5

Cela a fonctionné pour moi:

*layer.removeFeatures(featureObject);*

Mais j'ai la fonctionnalité en tant que variable globale, peut-être que dans d'autres cas, vous devriez essayer de conserver l'ID de la fonctionnalité afin de chercher à la supprimer.

Gorloki
la source