ESRI Javascript FeatureLayer Pilih berdasarkan Atribut

8

Saya mencoba untuk memilih sekelompok fitur di ESRI javascript API featureLayer berdasarkan atribut. Panggilan keluar. Kode saya adalah sebagai berikut. Berikut ini definisi layer:

    var fieldDefs = [{
        "name": "county",
        "type": "esriFieldTypeString",
        "alias": "county"
    },
    {
        "name": "pop",
        "type": "esriFieldTypeInteger",
        "alias": "pop"
    },

        "name": "ObjectID",
        "alias": "ObjectID",
        "type": "esriFieldTypeOID"
    }
    ];

    var featureCollection = {
              "layerDefinition": null,
              "featureSet": {
                "features": [],
                "geometryType": "esriGeometryPolygon";
              }
            };
    var featureCollection.layerDefinition = {
              "geometryType": "esriGeometryPolygon";,
              "objectIdField": "ObjectID",
              "drawingInfo": {
                "renderer": {
                  "type": "simple",
                  "symbol": symbol
                }
              },
              "fields": fieldDefs
            };
     var featureLayer = new FeatureLayer(featureCollection, {
                  id: idString,
                  mode: FeatureLayer.MODE_SNAPSHOT,
                  fields: fieldDefs
                });

Saya kemudian mengisi layer menggunakan applyEditsdan kemudian permintaan layer menggunakan fungsi ini:

queryCounty = function(county_name) {
            var query = new Query();
            query.where = "county = '" + county_name + "'";
            //projectsOverlayMap.clearSelection();
            console.log("WHERE: " + "county = '" + county_name + "'");
            projectsOverlayMap.selectFeatures(query, FeatureLayer.SELECTION_NEW, function(results){
                alert(results.length);
            });

Dan menyebutnya seperti ini:

queryCounty("Jefferson");

Ketika saya melakukan itu, saya mendapatkan kesalahan berikut:

"Kesalahan: FeatureLayer :: selectFeatures - kueri berisi satu atau lebih parameter yang tidak didukung

Ada beberapa contoh online yang layak dari fungsi ini menggunakan kueri geometri tetapi tidak ada yang saya temukan yang menggunakan dan mengaitkan kueri. Apa yang saya lewatkan?

Frank Conry
sumber
apakah itu ada hubungannya dengan gis.stackexchange.com/a/112438/5850
vinayan

Jawaban:

3

Apakah Anda membuat featureelayer dengan FeatureLayer (featureCollectionObject, options?) ?

Jika ya ada beberapa batasan untuk objek featureelayer. Anda tidak dapat menjalankan query pada layer tersebut.

Lihat dokumen https://developers.arcgis.com/javascript/jsapi/featurelayer-amd.html#featurelayer2

Shabeerali
sumber
Doc mengatakan "Tidak mendukung permintaan yang perlu dilakukan di server " karena saya dalam mode snapshot, semuanya tetap ada pada klien, kan? Semua fitur sudah dimuat dengan atribut sudah, tidak ada komponen serveride.
Frank Conry 3-15
1
Saya pikir permintaan dengan di mana akan bekerja hanya dengan lapisan fitur yang ada dari server. Lihat utas geonet.esri.com/thread/14137 Untuk pengujian coba jalankan permintaan dengan objectid
Shabeerali
1

Itu kikuk tetapi Anda dapat meminta pada sejauh mana peta dan kemudian loop melalui hasil untuk mendapatkan atribut yang Anda inginkan. Sebagai contoh:

require(['esri/tasks/query', 'esri/layers/FeatureLayer'], function (Query, FeatureLayer) {
    var query = new Query();
    query.geometry = projectsOverlayMap.extent;
    featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (results) {
        for(var key in results) {
            if(results[key].attributes['county'] === county_name) {
                ... do something ...
            }
        }
    });
}
Chris
sumber