apa cara yang tepat untuk menghapus semua fitur dari featureLayer


10

Saya punya featureLayerdan saya tidak ingin membunuhnya dan membuat yang lain. Saya ingin menghapus semua fitur dari featureLayer saat ini. Saya menemukan bahwa saya dapat menggunakan applyEditsmetode tetapi untuk menggunakannya saya harus memiliki semua fitur yang ingin saya hapus. Sementara saya tidak ingin menyimpannya secara terpisah. Apakah Anda tahu cara yang lebih baik untuk mengosongkan featureLayer saya saat menggunakan ArcGIS Javascript API?

Jawaban:


3

Gunakan featureLayer.selectFeatures () dengan, seperti yang disarankan Kirk, klausa mana yang akan mengembalikan semua fitur Anda. Setelah Anda memiliki semua fitur Anda, berikan mereka untuk menerapkanEdits () sebagai menghapus.


Bukankah ini akan mengembalikan banyak fitur ke klien? Jika ini adalah dataset besar, itu bisa sangat lambat.
Kirk Kuykendall

2
Satu-satunya masalah adalah saya tidak bisa menentukan tempat klausa yang tepat - saya mencoba "1 = 1", "OBJECTID> 0", dll. Tetapi setiap kali saya memiliki kesalahan "FeatureLayer :: selectFeatures - kueri berisi satu atau lebih parameter yang tidak didukung ". Kode var query = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (permintaan, ...);
Kirill Lykov

Mungkin, jika featureelayer tidak terhubung dengan layanan fitur apa pun, itu tidak mendukung klausa mana. Bagaimana menurut anda?
Kirill Lykov

"Jika featureelayer tidak terhubung dengan layanan fitur apa pun, itu tidak mendukung klausa mana" - itu benar, tetapi jika demikian juga tidak akan mendukung pengeditan. Dari referensi API: "Jika lapisan yang mendasarinya ... berasal dari Layanan Fitur, fitur-fiturnya dapat diedit", menyiratkan bahwa featureLayer Anda terhubung ke layanan fitur
Stephen Lead

"itu juga tidak akan mendukung pengeditan" - Saya mendukung pengeditan meskipun tidak terhubung dengan layanan. Hovewer, saya harus membuat beberapa solusi.
Kirill Lykov

4

Coba buat panggilan fitur hapus REST dengan klausa "1 = 1" atau yang serupa.


1
hai apakah ada sintaks untuk panggilan fitur hapus REST? dapatkah Anda memberikan saya sebuah contoh ketika saya mencoba melakukan itu
jonleech

1

Jika Anda telah membuat lapisan fitur di sisi klien (tidak ada url sisi server), maka Anda tidak dapat menggunakan kueri dengan klausa di mana. Saya dapat mengatasi ini dengan mencari sejauh mana peta dan kemudian menghapus semua item yang saya temukan. Sebagai contoh:

function removeAllLayerFeatures(map, layer) {
    require(['esri/tasks/query', 'esri/layers/FeatureLayer'], function (Query, FeatureLayer) {
        var query = new Query();
        query.geometry = map.extent;
        layer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (results) {
            for (var key in results) {
                layer.remove(results[key]);
            }
        });
    });
}


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.