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

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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.