Usuń / Usuń funkcję z warstwy wektorowej OpenLayers

15

Mam warstwę OpenLayers z kilkoma wektorami. Znam identyfikator funkcji OpenLayers (np. OpenLayers.Feature.Vector_241) i chciałbym wiedzieć, jak usunąć tę funkcję i tylko tę funkcję?

Zastanawiałem się nad usunięciem ich wszystkich, a następnie zapętleniem tablicy, aby je przerysować, ale wydaje się to trochę nieeleganckie i długo nakręcone.

Próbowałem różnych wersji następującego kodu:

layer.removeFeatures( featureID );

I

layer.removeFeatures( [featureID] );

I

layer.removeFeatures( {feature : featureID });

Itp...

Wszelka pomoc jest mile widziana!

Dzięki

do

CatchingMonkey
źródło

Odpowiedzi:

20

Nie sądzę, że OpenLayers jest w stanie usunąć funkcję, udostępniając featureID. Wygląda na to, że może usunąć funkcje tylko poprzez zapewnienie funkcji lub szeregu funkcji:

layer.removeFeatures(featureObject);

Zamiast tego możesz najpierw zlokalizować obiekt, a następnie usunąć znaleziony obiekt:

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

Lub podobnie, jeśli nie jest to identyfikator FeatureLayers OpenLayers

layer.removeFeatures(layer.getFeatureBy('myId', myID));
Chau
źródło
Podoba mi się myślenie! Problem polega jednak na tym, że instrukcja „layer.getFeatureById (featureID))” zwraca null, więc funkcja removeFeature () nie działa. Im 100%, że mam jednak odpowiednie FeatureIDs ... jeszcze jakieś myśli?
CatchingMonkey
1
Zdrap to. Użyłem niewłaściwego ID obiektu. Korzystam z twojego drugiego przykładu i działa idealnie. Niezłe!
CatchingMonkey
5

To działało dla mnie:

*layer.removeFeatures(featureObject);*

Ale mam tę funkcję jako zmienną globalną, być może w innych przypadkach powinieneś spróbować zachować identyfikator funkcji w celu jej usunięcia.

Gorloki
źródło