Eliminar / Eliminar una entidad de la capa vectorial OpenLayers

15

Tengo una capa OpenLayers con varios vectores. Conozco el ID de la función OpenLayers (por ejemplo, OpenLayers.Feature.Vector_241) y me gustaría saber cómo eliminar esta función y solo esta función.

He considerado eliminarlos todos y luego recorrer una matriz para volver a dibujarlos, pero esto parece un poco poco elegante y largo aliento.

He intentado una variedad de versiones del siguiente código:

layer.removeFeatures( featureID );

Y

layer.removeFeatures( [featureID] );

Y

layer.removeFeatures( {feature : featureID });

Etc ...

Toda ayuda es bienvenida!

Gracias

C

AtraparMono
fuente

Respuestas:

20

No creo que OpenLayers sea capaz de eliminar una característica al proporcionar el featureID. Parece que solo puede eliminar características al proporcionar una característica o una matriz de características:

layer.removeFeatures(featureObject);

Pero en su lugar, puede ubicar la característica primero y luego eliminar la característica encontrada:

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

O similar si no es el OpenLayers FeatureID que tienes, entonces

layer.removeFeatures(layer.getFeatureBy('myId', myID));
Chau
fuente
Me gusta pensar! Sin embargo, el problema es que la instrucción "layer.getFeatureById (featureID))" devuelve nulo, por lo que removeFeature () no funciona. Sin embargo, estoy 100% seguro de que tengo los FeatureIDs correctos ... ¿Alguna idea más?
CatchingMonkey
1
Rasca eso. Estaba usando la ID de función incorrecta. Estoy usando su segundo ejemplo y funciona perfectamente. ¡Buena esa!
CatchingMonkey
5

Esto funcionó para mí:

*layer.removeFeatures(featureObject);*

Pero tengo la función como una variable global, tal vez en otros casos deberías tratar de mantener la ID de la función para buscar eliminarla.

Gorloki
fuente