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

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));

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.