Hapus / Hapus fitur dari lapisan vektor OpenLayers

15

Saya memiliki layer OpenLayers dengan beberapa vektor di atasnya. Saya tahu ID Fitur OpenLayers (mis. OpenLayers.Feature.Vector_241) dan saya ingin tahu cara menghapus fitur ini dan hanya fitur ini?

Saya telah mempertimbangkan untuk menghapus semuanya dan kemudian mengulang array untuk menggambar ulang mereka, tetapi ini tampaknya sedikit tidak elegan, dan panjang lebar.

Saya telah mencoba berbagai versi kode folllowing:

layer.removeFeatures( featureID );

Dan

layer.removeFeatures( [featureID] );

Dan

layer.removeFeatures( {feature : featureID });

Dll ...

Semua bantuan dipersilahkan!

Terima kasih

C

CatchingMonkey
sumber

Jawaban:

20

Saya tidak berpikir bahwa OpenLayers mampu menghapus fitur dengan menyediakan featureID. Sepertinya hanya dapat menghapus fitur dengan menyediakan fitur atau serangkaian fitur:

layer.removeFeatures(featureObject);

Tetapi Anda dapat menemukan fitur itu terlebih dahulu dan kemudian menghapus fitur yang ditemukan:

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

Atau serupa jika itu bukan OpenLayers FeatureID yang Anda miliki, maka

layer.removeFeatures(layer.getFeatureBy('myId', myID));
Chau
sumber
Saya suka pemikirannya! Masalahnya adalah bahwa pernyataan "layer.getFeatureById (featureID))" mengembalikan null, sehingga removeFeature () tidak berfungsi. Im 100% saya memiliki FeatureIDs yang tepat .... ada pikiran lagi?
CatchingMonkey
1
Gores itu. Saya menggunakan ID fitur yang salah. Saya menggunakan contoh kedua Anda dan berfungsi dengan baik. Yang bagus!
CatchingMonkey
5

Ini bekerja untuk saya:

*layer.removeFeatures(featureObject);*

Tapi saya sudah mendapatkan fitur sebagai variabel global, mungkin dalam kasus lain Anda harus mencoba untuk menjaga ID fitur untuk mencari untuk menghapusnya.

Gorloki
sumber