ফিচারলাইয়ারের সিলেক্টস সেটটির সাথে ফিচার টেবিলকে কীভাবে সিঙ্ক করবেন?


9

আরকজিআইএস সার্ভার জেএস এপিআইতে একটি নতুন ফিচার টেবিল শ্রেণি রয়েছে যা ফিচারলায়ারের সাথে সম্পর্কিত বৈশিষ্ট্য সারণীটি দেখায়। একটি বিকল্প সিঙ্কস্লেশন রয়েছে যা:

মানচিত্র এবং বৈশিষ্ট্য সারণীর মধ্যে একটি ইন্টারঅ্যাকশন সক্ষম করে। এই সম্পত্তিটিকে সত্যে সেট করা সারণীতে সারি সারি ক্লিক করে মানচিত্রে একটি বৈশিষ্ট্য নির্বাচন করতে এবং মানচিত্রে একটি বৈশিষ্ট্য ক্লিক করে একটি সারণির সারি নির্বাচন করার অনুমতি দেয়

যাইহোক, এটি স্তরটির বিরুদ্ধে প্রোগ্রামারিকভাবে তৈরি একটি নির্বাচন সেটকে সম্মান করবে বলে মনে হয় না ।

Https://developers.arcgis.com/javascript/3/sandbox/sandbox.html?sample=featuretable এ নমুনা নেওয়া , যদি আমি ফিচারলায়ারে একটি নির্বাচন প্রয়োগ করি তবে এটি ফিচার টেবিলটিতে প্রতিফলিত হয় না:

// Create the feature layer
myFeatureLayer = new FeatureLayer("https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Warren_College_Trees/FeatureServer/0", {
  mode: FeatureLayer.MODE_SELECTION,
  visible: true,
  outFields: ["*"],
  id: "fLayer"
});
var myQuery = new Query();
myQuery.where = "Spp_Code ='SABA'";
myFeatureLayer.selectFeatures(myQuery,FeatureLayer.SELECTION_NEW)

এটি বৈশিষ্ট্য স্তরটিতে সঠিকভাবে নির্বাচনটি প্রয়োগ করে (মনে রাখবেন মানচিত্রে কেবলমাত্র একটি পয়েন্ট রয়েছে), তবে বৈশিষ্ট্য সারণীতে নয় (এটি 0 টি নির্বাচিত সমস্ত 1146 পয়েন্ট তালিকাভুক্ত করে):

এখানে চিত্র বর্ণনা লিখুন

নির্বাচন সেট প্রতিফলিত করার জন্য বৈশিষ্ট্য সারণীটি রিফ্রেশ করার কোনও উপায় আছে?


একটি নোট হিসাবে, আমি এফআইডি বৈশিষ্ট্যযুক্ত লেয়ার "নির্বাচন-সম্পূর্ণ" কলব্যাকের মধ্যে নির্বাচনের ফলাফলের সাথে মিল রেখে সারিগুলিতে myFeatureTable.grid.select () নির্বাচন করার চেষ্টা করেছি এবং আমি বৃত্তাকার কলব্যাকগুলিতে চলে এসেছি। সারিটি নির্বাচিত হয়েছে কি না কাজ করে কিনা তা দেখার জন্য সম্ভবত একটি চেক যোগ করা। আরও পরে গবেষণা করবে।
রায়েন্দো

উত্তর:


2

৩.১16 থেকে শুরু করে এবং পরে, সেই SyncSelectionবুলিয়ান প্রয়োগ আপনার বর্ণনার চেয়ে কিছুটা আলাদা:

মানচিত্র এবং বৈশিষ্ট্য সারণীর মধ্যে একটি ইন্টারঅ্যাকশন সক্ষম করে। এই সম্পত্তিটিকে সত্যে সেট করা সারণীতে একটি সারিটিতে ক্লিক করে মানচিত্রে একটি বৈশিষ্ট্য নির্বাচনের অনুমতি দেয়। যাইহোক, ব্যবহারকারী যখন মানচিত্রে কোনও বৈশিষ্ট্যে ক্লিক করেন তখন এটি টেবিলের রেকর্ডগুলি নির্বাচন সক্ষম করে না। টেবিলটিতে মানচিত্র থেকে নির্বাচন সক্ষম করতে বিকাশকারীকে অবশ্যই স্তরের ক্লিক যুক্তি প্রয়োগ করতে হবে। এটি কারণ অ্যাপ্লিকেশনটির নিজস্ব নির্বাচনের যুক্তি অন্য কোথাও বা তাদের নিজস্ব ক্লিক যুক্তিযুক্ত থাকতে পারে। (V3.16 এ যুক্ত হয়েছে)

সুতরাং, আমি জানি এটি একটি রাজকীয় যন্ত্রণা, তবে আমি বিশ্বাস করি যে আপনাকে মানচিত্রের স্তরগুলি নির্বাচিত বৈশিষ্ট্যগুলি লুপ করতে হবে এবং সেগুলিতে নির্বাচিত ক্লিক ইভেন্টটি কল করে তাদের আবার নির্বাচন করতে হবে (প্রোগ্রামগতভাবে))


2

মানচিত্রে এটি যা দৃশ্যমান তা কেবল দেখার জন্য এটি আমার সমাধান (দেখুন :)

    _selectViewIds: function() {
        var objectIdFieldName = this.layer.layerObject.objectIdField;
        q = new Query();
        q.outFields = [objectIdFieldName];
        q.geometry = this.map.extent;
        var exp=this.layer.layerObject.getDefinitionExpression();
        q.where = exp;
        q.returnGeometry = true;
        new QueryTask(this.layer.layerObject.url).execute(q).then(lang.hitch(this, function(ev) {
            var selectedIds = ev.features.map(function(f) {return f.attributes[objectIdFieldName];});

            this.myFeatureTable.filterRecordsByIds(selectedIds);
        }));
    }

...

        on(selectFeaturesBtn, 'change', lang.hitch(this, function(ev) {
            if(selectFeaturesBtn.isChecked()) {
                this._selectViewIds();
                on(this.map, "extent-change", lang.hitch(this, this._selectViewIds, this));
            } else {
                this.myFeatureTable.clearFilter();
            }
        }));

1

selection-completeইভেন্টের দিকে ঝুঁকুন, ব্যবহার করুন getSelectedFeatures(), আইডির একটি অ্যারেতে ফলাফলটি ম্যাপ করুন এবং এটি FeatureTableমাধ্যমে প্রেরণ করুন selectRows। তারপরে ইভেন্টটির selectFeaturesদিকে clickঝুঁকুন এবং আপনার কাজ শেষ।

মোটামুটি ধারণা হিসাবে:

layer.on("click", function(evt) {
    var query = new Query();
    query.geometry = evt.mapPoint;
    layer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function() {
        var ids = layer.getSelectedFeatures().map(function(feature) {
            return feature.attributes[objectIDFieldName];
        });
        featureTable.selectRows(ids);
    });
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.