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?

Kirill Lykov
sumber

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.

Derek Swingley
sumber
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.

Kirk Kuykendall
sumber
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]);
            }
        });
    });
}
Chris
sumber
0

Periksa metode clear () :

Menghapus semua gambar.

featureLayer.clear();
Leniel Maccaferri
sumber
-2

Gunakan Kursor Perbarui , pilih semua fitur ("*").

Gunakan IFeature.Delete () , dan simpan ketika selesai.

ujjwalesri
sumber
Pertanyaan ini menanyakan solusi JavaScript, bukan ArcObjects.
Derek Swingley
Ups ... kesalahan saya! Tolong abaikan.
ujjwalesri