ESRI JavaScript FeatureLayer Select by Attributes


8

ESRI JavaScript APIのfeatureLayerで属性のグループを選択しようとしています。呼び出しはエラーになります。私のコードは次のとおりです。レイヤーの定義は次のとおりです。

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

次に、使用applyEditsしてレイヤーにデータを入力し、後でこの関数を使用してレイヤーをクエリします。

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

そして、それを次のように呼び出します:

queryCounty("Jefferson");

これを行うと、次のエラーが発生します。

「エラー:FeatureLayer :: selectFeatures-クエリにサポートされていないパラメーターが含まれています

ジオメトリクエリを使用したこの関数の適切な例はいくつかありますが、属性クエリを使用したものはありません。何が欠けていますか?


回答:


3

FeatureLayer(featureCollectionObject、options?)によってfeaturelayerを作成していますか

はいの場合、featurelayerオブジェクトにいくつかの制限があります。このようなレイヤーではクエリを実行できません。

ドキュメントを参照してくださいhttps://developers.arcgis.com/javascript/jsapi/featurelayer-amd.html#featurelayer2


ドキュメントには、「サーバーで実行する必要のあるクエリはサポートされていません」と書かれています。私はスナップショットモードなので、すべてがクライアントで永続化されていますよね。すべての機能はすでに属性付きでロードされており、サーバーサイドコンポーネントはありません。
Frank Conry、2015年

1
whereを使用したクエリは、サーバーからのフィーチャレイヤーでのみ機能すると思います。スレッドgeonet.esri.com/thread/14137を参照してください。テストするには、objectidを使用してクエリを実行してください
Shabeerali

1

不格好ですが、マップの範囲でクエリを実行し、結果をループして必要な属性を取得できます。例えば:

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 ...
            }
        }
    });
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.