ESRI Javascript FeatureLayer Chọn theo các thuộc tính


8

Tôi đang cố gắng chọn một nhóm các tính năng trong tính năng API javascript API ESRI theo thuộc tính. Các cuộc gọi lỗi ra. Mã của tôi là như sau. Đây là định nghĩa lớp:

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

Sau đó tôi điền vào lớp bằng cách sử dụng applyEditsvà sau đó truy vấn lớp bằng hàm này:

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

Và gọi nó như thế này:

queryCounty("Jefferson");

Khi tôi làm điều đó tôi nhận được lỗi sau:

"Lỗi: FeatureLayer :: selectFeatures - truy vấn chứa một hoặc nhiều tham số không được hỗ trợ

Có một số ví dụ điển hình về hàm này sử dụng các truy vấn hình học nhưng không có ví dụ nào tôi tìm thấy sử dụng và truy vấn thuộc tính. Tôi đang thiếu gì?


nó có liên quan gì với gis.stackexchange.com/a/112438/5850
vinayan

Câu trả lời:


3

Bạn có đang tạo featurelayer bằng FeatureLayer (FeatureCollectionObject, tùy chọn không?) ?

Nếu có, có một số hạn chế cho đối tượng featurelayer. Bạn không thể thực hiện các truy vấn trên các lớp như vậy.

Xem tài liệu https://developers.arcgis.com/javascript/jsapi/featurelayer-amd.html#featurelayer2


Tài liệu nói "Không hỗ trợ các truy vấn cần được thực hiện trên máy chủ " vì tôi đang ở chế độ chụp nhanh, mọi thứ vẫn tồn tại trên máy khách, phải không? Tất cả các tính năng đã được tải với các thuộc tính đã có, không có thành phần máy chủ.
Frank Conry

1
Tôi nghĩ rằng truy vấn với nơi sẽ chỉ hoạt động với lớp tính năng có từ máy chủ. Xác định chuỗi geonet.esri.com/thread/14137 Để thử nghiệm, hãy thử thực hiện truy vấn với objectid
Shabeerali

1

Thật khó hiểu nhưng bạn có thể truy vấn trên phạm vi bản đồ và sau đó lặp qua các kết quả để có được các thuộc tính bạn muốn. Ví dụ:

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 ...
            }
        }
    });
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.