फीचरलेयर से सभी सुविधाओं को हटाने का सही तरीका क्या है


10

मेरे पास एक है featureLayerऔर मैं इसे मारना नहीं चाहता और एक और बनाना चाहता हूं। मैं वर्तमान फीचर लेयर से सभी सुविधाओं को हटाना चाहता हूं। मैंने पाया कि मैं applyEditsविधि का उपयोग कर सकता हूं लेकिन इसका उपयोग करने के लिए मुझे उन सभी विशेषताओं की आवश्यकता होगी जिन्हें मैं हटाना चाहता हूं। जबकि मैं उन्हें अलग से स्टोर नहीं करना चाहता। क्या आप ArcGIS जावास्क्रिप्ट एपीआई का उपयोग करते समय मेरे फीचरलेयर को खाली करने का एक बेहतर तरीका जानते हैं?

जवाबों:


3

किर्क ने सुझाव दिया, जहां एक क्लॉज है जो आपकी सभी सुविधाओं को लौटाएगा, जैसे फीचरलेयर.इलेक्ट्रेट फीचर्स () का उपयोग करें। एक बार जब आपके पास अपनी सभी सुविधाएँ हों, तो उन्हें डिलीट के रूप में applyEdits () में पास करें।


क्या यह क्लाइंट के लिए बहुत सारी सुविधाएँ नहीं लौटाएगा? यदि यह एक बड़ा डेटासेट है तो यह वास्तव में धीमा हो सकता है।
किर्क कुएकेन्डल

2
एकमात्र समस्या यह है कि मैं वह अधिकार निर्दिष्ट नहीं कर सकता जहाँ क्लॉज़ - मैंने "1 = 1", "OBJECTID> 0", आदि की कोशिश की, लेकिन हर बार मेरे पास एक त्रुटि है "फ़ीचर लेयर: चयनफल - क्वेरी में एक या अधिक असमर्थित पैरामीटर हैं। "। कोड var क्वेरी = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (क्वेरी, ...);
किरिल ल्यकोव

शायद, यदि फीचरलेयर किसी फीचर सेवा से जुड़ा नहीं है, तो यह जहां क्लॉज है, उसका समर्थन नहीं करता है। तुम क्या सोचते हो?
किरिल ल्यकोव

"यदि फीचरलाइन किसी फीचर सेवा से नहीं जुड़ा है, तो वह समर्थन नहीं करता है जहां क्लॉज है" - यह सही है, लेकिन यदि यह संपादन का समर्थन नहीं करेगा। एपीआई संदर्भ से: "यदि अंतर्निहित परत ... एक फ़ीचर सेवा से है, तो इसकी विशेषताओं को संपादित किया जा सकता है", इसका अर्थ है कि आपका फ़ीचरर एक फीचर सेवा से जुड़ा है
स्टीफन लीड

"यह संपादन का भी समर्थन नहीं करेगा" - मैं संपादन का समर्थन करता हूं, भले ही यह सेवा से जुड़ा न हो। होवेवर, मुझे कुछ वर्कआर्डर बनाने थे।
किरिल ल्यकोव

4

"1 = 1" या कुछ समान के साथ एक रीस्ट डिलीट फीचर कॉल करने का प्रयास करें।


1
नमस्ते वहाँ है किसी को हटाएं सुविधाओं कॉल करने के लिए वाक्यविन्यास? क्या आप मुझे एक उदाहरण प्रदान कर सकते हैं जैसा कि मैं करने की कोशिश कर रहा हूं
2

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 () का उपयोग करें , और जब किया तो स्टोर करें।


यह सवाल एक जावास्क्रिप्ट समाधान के लिए पूछ रहा है, न कि आर्कोबजेक्ट्स।
डेरेक स्विंगले

उफ़… मेरी गलती! कृपया उपेक्षा कर दीजिये।
उज्जवलेश्री
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.