OpenLayersベクターレイヤーからフィーチャを削除/削除します


15

いくつかのベクターを含むOpenLayersレイヤーがあります。OpenLayers機能ID(OpenLayers.Feature.Vector_241など)を知っていますが、この機能とこの機能のみを削除する方法を知りたいですか?

それらをすべて削除してから、配列をループして再描画することを検討しましたが、これは少し洗練されていないように見えます。

次のコードのさまざまなバージョンを試しました。

layer.removeFeatures( featureID );

そして

layer.removeFeatures( [featureID] );

そして

layer.removeFeatures( {feature : featureID });

等...

すべての助けを歓迎します!

ありがとう

C

回答:


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を使用していました。私はあなたの2番目の例を使用して、それは完全に動作します。良いですね!
CatchingMonkey

5

これは私のために働いた:

*layer.removeFeatures(featureObject);*

しかし、私は機能をグローバル変数として持っています。他の場合では、それを削除するために検索するために機能IDを保持しようとする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.