Suite

Supprimer/supprimer une entité de la couche vectorielle OpenLayers

Supprimer/supprimer une entité de la couche vectorielle OpenLayers


J'ai une couche OpenLayers avec plusieurs vecteurs dessus. Je connais l'identifiant de la fonctionnalité OpenLayers (par exemple, OpenLayers.Feature.Vector_241) et j'aimerais savoir comment supprimer cette fonctionnalité et uniquement cette fonctionnalité ?

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

J'ai essayé plusieurs versions du code suivant :

layer.removeFeatures( featureID );

Et

layer.removeFeatures( [featureID] );

Et

layer.removeFeatures( {feature : featureID });

Etc…

Toute aide est la bienvenue !

Merci

C


Je ne pense pas qu'OpenLayers soit capable de supprimer une fonctionnalité en fournissant leID de fonctionnalité. Il semble qu'il ne puisse supprimer une fonctionnalité qu'en fournissant une fonctionnalité ou un ensemble 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));

Pour OpenLayers v6+ c'est fait d'une autre manière, considérant quecoucheest une couche vectorielle :

let feature = layer.getSource().getFeatureById('featureID');

getFeatureById()


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 rechercher pour le supprimer.