OpenLayers 벡터 레이어에서 기능 제거 / 삭제


15

여러 개의 벡터가있는 OpenLayers 레이어가 있습니다. OpenLayers 기능 ID (예 : OpenLayers.Feature.Vector_241)를 알고 있으며이 기능과이 기능 만 제거하는 방법을 알고 싶습니다.

나는 그것들을 모두 삭제 한 다음 배열을 반복하여 다시 그리기를 고려했지만 약간 우아하지 않고 오래 감았습니다.

다음 코드의 다양한 버전을 시도했습니다.

layer.removeFeatures( featureID );

layer.removeFeatures( [featureID] );

layer.removeFeatures( {feature : featureID });

기타...

모든 도움을 환영합니다!

감사

답변:


20

OpenLayers가을 제공하여 기능을 제거 할 수 있다고 생각하지 않습니다 featureID. 기능이나 기능 배열을 제공하여 기능 만 제거 할 수있는 것 같습니다.

layer.removeFeatures(featureObject);

그러나 대신 기능을 먼저 찾은 다음 찾은 기능을 제거 할 수 있습니다.

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

또는 OpenLayers FeatureID가 아닌 경우 유사합니다.

layer.removeFeatures(layer.getFeatureBy('myId', myID));

나는 생각을 좋아한다! 문제는 "layer.getFeatureById (featureID))"문이 null을 반환하므로 removeFeature ()가 작동하지 않는 것입니다. 나는 100 % 내가 올바른 FeatureID를 가지고 있다고 생각합니다 .... 더 이상 생각?
CatchingMonkey

1
긁어 잘못된 featureID를 사용하고있었습니다. 두 번째 예를 사용하고 완벽하게 작동합니다. 좋은 것!
CatchingMonkey

5

이것은 나를 위해 일했다 :

*layer.removeFeatures(featureObject);*

그러나 기능을 전역 변수로 사용했을 수도 있습니다. 다른 경우에는 기능 ID를 검색하여 제거하기 위해 기능 ID를 유지해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.