Remover / excluir um recurso da camada vetorial OpenLayers

15

Eu tenho uma camada OpenLayers com vários vetores. Conheço o ID do recurso OpenLayers (por exemplo, OpenLayers.Feature.Vector_241) e gostaria de saber como remover esse recurso e somente esse recurso?

Eu considerei excluí-los todos e depois percorrer uma matriz para redesenhá-los, mas isso parece um pouco deselegante e demorado.

Eu tentei várias versões do código a seguir:

layer.removeFeatures( featureID );

E

layer.removeFeatures( [featureID] );

E

layer.removeFeatures( {feature : featureID });

Etc ...

Toda ajuda é bem vinda!

obrigado

C

CatchingMonkey
fonte

Respostas:

20

Eu não acho que o OpenLayers seja capaz de remover um recurso fornecendo o featureID. Parece que ele só pode remover um recurso, fornecendo um recurso ou uma variedade de recursos:

layer.removeFeatures(featureObject);

Mas você pode localizar o recurso primeiro e depois remover o recurso encontrado:

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

Ou semelhante, se não for o OpenLayers FeatureID que você possui,

layer.removeFeatures(layer.getFeatureBy('myId', myID));
Chau
fonte
Eu gosto do pensamento! O problema é que a instrução "layer.getFeatureById (featureID))" retorna nula e, portanto, o removeFeature () não funciona. Im 100% que eu tenho os FeatureIDs certos embora .... mais pensamentos?
CatchingMonkey
1
Risca isso. Eu estava usando o featureID errado. Estou usando o seu segundo exemplo e ele funciona perfeitamente. Agradável!
CatchingMonkey
5

Isso funcionou para mim:

*layer.removeFeatures(featureObject);*

Mas eu tenho o recurso como uma variável global, talvez em outros casos você deva tentar manter o ID do recurso para procurar removê-lo.

Gorloki
fonte