เป็นวิธีที่ถูกต้องในการลบฟีเจอร์ทั้งหมดออกจาก featureLayer


10

ฉันมีfeatureLayerและฉันไม่ต้องการฆ่ามันและสร้างอีกอัน ฉันต้องการลบคุณสมบัติทั้งหมดออกจาก featureLayer ปัจจุบัน ฉันพบว่าฉันสามารถใช้applyEditsวิธีการ แต่เพื่อที่จะใช้ฉันต้องมีคุณสมบัติทั้งหมดที่ฉันต้องการลบ ในขณะที่ฉันไม่ต้องการจัดเก็บแยกต่างหาก คุณรู้วิธีที่ดีกว่าในการล้างข้อมูลคุณสมบัติของฉันเมื่อใช้ ArcGIS Javascript API หรือไม่

คำตอบ:


3

ใช้ featureLayer.selectFeatures () ด้วยตามที่ Kirk แนะนำประโยคที่จะส่งคืนฟีเจอร์ทั้งหมดของคุณ เมื่อคุณมีฟีเจอร์ทั้งหมดของคุณให้ส่งผ่านไปที่ ApplyEdits () เป็นลบ


สิ่งนี้จะไม่ส่งคืนฟีเจอร์จำนวนมากให้กับลูกค้าหรือไม่ ถ้านี่เป็นชุดข้อมูลขนาดใหญ่มันอาจช้ามาก
Kirk Kuykendall

2
ปัญหาเดียวคือฉันไม่สามารถระบุสิทธิ์ในส่วนที่ - ฉันพยายาม "1 = 1", "OBJECTID> 0" ฯลฯ แต่ทุกครั้งที่ฉันมีข้อผิดพลาด "FeatureLayer :: selectFeatures - แบบสอบถามประกอบด้วยพารามิเตอร์ที่ไม่สนับสนุนอย่างน้อยหนึ่งรายการ " code var query = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (แบบสอบถาม, ... );
Kirill Lykov

บางทีถ้า featurelayer ไม่ได้เชื่อมต่อกับบริการฟีเจอร์ใด ๆ มันไม่สนับสนุนในส่วนที่ คุณคิดอย่างไร?
Kirill Lykov

"ถ้า featururelayer ไม่ได้เชื่อมต่อกับบริการฟีเจอร์ใด ๆ มันไม่สนับสนุนในกรณีที่คำสั่ง" - ถูกต้อง แต่ถ้าเป็นเช่นนั้นมันจะไม่รองรับการแก้ไข จากการอ้างอิง API: "ถ้าเลเยอร์ที่ขีดเส้นใต้ ... มาจากฟีเจอร์ฟีเจอร์สามารถแก้ไขได้" ซึ่งหมายความว่าฟีเจอร์ของคุณเชื่อมต่อกับฟีเจอร์ฟีดเลเยอร์
สตีเฟ่นตะกั่ว

"มันยังไม่รองรับการแก้ไข" - ฉันรองรับการแก้ไขแม้ว่าจะไม่ได้เชื่อมต่อกับบริการ Hovewer ฉันต้องแก้ไขปัญหาบางอย่าง
คิริลล์ลีคอฟ

4

ลองทำการเรียกใช้คุณสมบัติการลบ RESTด้วยส่วนคำสั่ง "1 = 1" หรือบางสิ่งที่คล้ายกัน


1
สวัสดีมีไวยากรณ์ใด ๆ ในการเรียกใช้คุณลักษณะการลบ REST ไหม คุณช่วยยกตัวอย่างให้ฉันได้ไหมขณะที่ฉันพยายามทำเช่นนั้น
jonleech

1

หากคุณสร้างเลเยอร์คุณลักษณะบนฝั่งไคลเอ็นต์ (ไม่มี URL ฝั่งเซิร์ฟเวอร์) ดังนั้นคุณจะไม่สามารถใช้คิวรีที่มีส่วนคำสั่งที่ไหน ฉันสามารถแก้ไขสิ่งนี้ได้โดยค้นหาขอบเขตของแผนที่แล้วลบรายการทั้งหมดที่ฉันพบ ตัวอย่างเช่น:

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]);
            }
        });
    });
}


-2

ใช้เคอร์เซอร์อัปเดตเลือกคุณสมบัติทั้งหมด ("*")

ใช้IFeature.Delete ()และเก็บเมื่อทำเสร็จ


คำถามนี้กำลังขอวิธีแก้ไข JavaScript ไม่ใช่ ArcObjects
Derek Swingley

อ๊ะ ... ความผิดพลาดของฉัน! กรุณาเพิกเฉย
ujjwalesri
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.