ESRI Javascript FeatureLayer Nach Attributen auswählen

8

Ich versuche, eine Gruppe von Features in einer ESRI-Javascript-API featureLayer nach Attribut auszuwählen. Der Anruf fällt aus. Mein Code lautet wie folgt. Hier ist die Ebenendefinition:

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

Ich fülle dann die Ebene mit applyEditsund frage die Ebene später mit dieser Funktion ab:

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

Und nenne es so:

queryCounty("Jefferson");

Wenn ich das mache, bekomme ich folgenden Fehler:

"Fehler: FeatureLayer :: selectFeatures - Abfrage enthält einen oder mehrere nicht unterstützte Parameter

Es gibt einige anständige Online-Beispiele für diese Funktion, bei denen Geometrieabfragen verwendet werden, aber keine, bei denen ich diese Verwendung und Attributabfrage gefunden habe. Was vermisse ich?

Frank Conry
quelle
hat es irgendetwas mit gis.stackexchange.com/a/112438/5850
vinayan

Antworten:

3

Erstellen Sie Featurelayer mit FeatureLayer (featureCollectionObject, Optionen?) ?

Wenn ja, gibt es einige Einschränkungen für das Featurelayer-Objekt. Sie können keine Abfragen auf solchen Ebenen ausführen.

Siehe die Dokumente https://developers.arcgis.com/javascript/jsapi/featurelayer-amd.html#featurelayer2

Shabeerali
quelle
Das Dokument sagt "Unterstützt keine Abfragen, die auf dem Server ausgeführt werden müssen ", da ich mich im Snapshot-Modus befinde, bleibt alles auf dem Client bestehen, oder? Alle Funktionen sind bereits mit Attributen geladen, es gibt keine serverseitige Komponente.
Frank Conry
1
Ich denke, die Abfrage mit wo funktioniert nur mit Feature-Layer, der vom Server hat. Verweisen Sie auf den Thread geonet.esri.com/thread/14137 Versuchen Sie zum Testen, die Abfrage mit objectid
Shabeerali
1

Es ist klobig, aber Sie können den Umfang der Karte abfragen und dann die Ergebnisse durchlaufen, um die gewünschten Attribute zu erhalten. Zum Beispiel:

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
quelle