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?


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


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 ...
            }
        }
    });
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.