ESRI Javascript FeatureLayer Selecione por atributos

8

Estou tentando selecionar um grupo de recursos em uma API JavaScript ESRI featureLayer por atributo. A chamada falha. Meu código é o seguinte. Aqui está a definição da camada:

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

Em seguida, preencho a camada usando applyEditse posteriormente a consulta usando esta função:

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

E chamando assim:

queryCounty("Jefferson");

Quando faço isso, recebo o seguinte erro:

"Erro: FeatureLayer :: selectFeatures - a consulta contém um ou mais parâmetros não suportados

Existem alguns exemplos on-line decentes dessa função usando consultas de geometria, mas nenhuma que eu achei que use e consulta de atributo. o que estou perdendo?

Frank Conry
fonte
que isso tem alguma coisa a ver com gis.stackexchange.com/a/112438/5850
Vinayan

Respostas:

3

Você está criando featurelayer pelo FeatureLayer (featureCollectionObject, options?) ?

Se sim, há alguma restrição para o objeto featurelayer. Você não pode executar consultas nessas camadas.

Consulte os documentos https://developers.arcgis.com/javascript/jsapi/featurelayer-amd.html#featurelayer2

Shabeerali
fonte
O documento diz "Não suporta consultas que precisam ser executadas no servidor ", pois estou no modo instantâneo, tudo persiste no cliente, certo? Todos os recursos já estão carregados com atributos, não há componente no servidor.
precisa saber é o seguinte
1
I acha que a consulta com o local onde irá trabalhar apenas com camada de recurso que tem de server.Refer os fios geonet.esri.com/thread/14137 Para testar tentativa para executar a consulta com objectid
Shabeerali
1

É desajeitado, mas você pode consultar a extensão do mapa e percorrer os resultados para obter os atributos desejados. Por exemplo:

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
fonte