cách đúng để xóa tất cả các tính năng khỏi FeatureLayer


10

Tôi có một featureLayervà tôi không muốn giết nó và tạo một cái khác. Tôi muốn xóa tất cả các tính năng khỏi tính năng hiện tại. Tôi thấy rằng tôi có thể sử dụng applyEditsphương thức nhưng để sử dụng nó, tôi cần phải có tất cả các tính năng tôi muốn xóa. Trong khi tôi không muốn lưu trữ chúng một cách riêng biệt. Bạn có biết cách tốt hơn để làm trống tính năng Trình phát của tôi khi sử dụng API Javascript ArcGIS không?

Câu trả lời:


3

Sử dụng FeatureLayer.selectFeatures () với, như Kirk đã đề xuất, một mệnh đề where sẽ trả về tất cả các tính năng của bạn. Khi bạn có tất cả các tính năng của mình, hãy chuyển chúng sang applicationEdits () dưới dạng xóa.


Điều này sẽ không trả lại nhiều tính năng cho khách hàng? Nếu đây là một tập dữ liệu lớn, nó thực sự có thể chậm.
Kirk Kuykendall

2
Vấn đề duy nhất là tôi không thể chỉ định mệnh đề đúng - Tôi đã thử "1 = 1", "OBRIID> 0", v.v. Nhưng mỗi khi tôi gặp lỗi "FeatureLayer :: selectFeatures - truy vấn chứa một hoặc nhiều tham số không được hỗ trợ ". Mã var query = new esri.t task.Query (); query.where = "1 = 1"; FeatureLayer.selectFeatures (truy vấn, ...);
Kirill Lykov

Có lẽ, nếu featurelayer không được kết nối với bất kỳ dịch vụ tính năng nào, thì nó không hỗ trợ các mệnh đề. Bạn nghĩ sao?
Kirill Lykov

"nếu featurelayer không được kết nối với bất kỳ dịch vụ tính năng nào, thì nó không hỗ trợ các mệnh đề" - điều đó đúng, nhưng nếu vậy thì nó cũng không hỗ trợ chỉnh sửa. Từ tham chiếu API: "Nếu lớp bên dưới ... là từ Dịch vụ tính năng, các tính năng của nó có thể được chỉnh sửa", ngụ ý rằng tính năng Trình phát của bạn được kết nối với một dịch vụ tính năng
Stephen Lead

"Nó cũng không hỗ trợ chỉnh sửa" - Tôi hỗ trợ chỉnh sửa ngay cả khi nó không được kết nối với dịch vụ. Hovewer, tôi đã phải thực hiện một số cách giải quyết.
Kirill Lykov

4

Hãy thử thực hiện một tính năng xóa REST gọi với mệnh đề "1 = 1" hoặc một cái gì đó tương tự.


1
xin chào, có cú pháp nào để gọi tính năng xóa REST không? bạn có thể cho tôi một ví dụ khi tôi đang cố gắng làm điều đó không
jonleech

1

Nếu bạn đã tạo lớp tính năng ở phía máy khách (không có url phía máy chủ), thì bạn không thể sử dụng truy vấn với mệnh đề where. Tôi đã có thể giải quyết vấn đề này bằng cách tìm kiếm phạm vi bản đồ và sau đó xóa tất cả các mục mà tôi tìm thấy. Ví dụ:

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

Sử dụng Con trỏ cập nhật , chọn tất cả các tính năng ("*").

Sử dụng IFeature.Delete () và lưu trữ khi hoàn tất.


Câu hỏi này đang yêu cầu một giải pháp JavaScript, không phải ArcObjects.
Derek Swingley

Rất tiếc ... lỗi của tôi! Làm ơn bỏ qua.
ujjwalesri
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.