ArcGIS API для Javascript: FeatureLayerCollection не отображает все функции - PullRequest
0 голосов
/ 01 июня 2018

Это изображение показывает результат моей реализации.

Проблема здесь в том, что слой feaure, отображаемый на карте, показывает только одну из функций, переданных в коде.

Как я это сделал?

  1. Создание векторного слоя с использованием new FeatureLayer(featureCollectionObject, options?).

  2. Создание запросаи QueryTask для запроса функций с сервера arcgi.

    var selectQuery: Query = new Query();
    selectQuery.returnGeometry = true;
    selectQuery.where = "1=1";
    selectQuery.outFields = ["NAME", "X", "Y"];
    var queryTask_XZQH = new QueryTask(FL_XZQH_URL);
    queryTask_XZQH.execute(selectQuery);
    
  3. Определите обработчик событий для "complete" queryTask.

    function onQueryTask_XZQHComplete(evt: object) {
    console.log(evt.featureSet.geometryType);
        //console.log(evt.featureSet);
        FL_XZQH = new FeatureLayer({
            featureSet: evt.featureSet,
            layerDefinition: {
                geometryType: "esriGeometryPolygon",
                className: "xzqh",
                objectIdField:"OBJECTID",
                fields: [
                    {
                        name: "OBJECTID ",
                        type:"esriFieldTypeOID",
                        alias:"OBJECTID"
                    },
                    {
                        name: "ID ",
                        type:"esriFieldTypeInteger ",
                        alias:"Id"
                    },
                    {
                        name: "Name",
                        type: "esriFieldTypeString",
                        length: 50,
                        alias: "行政区划名称"
                    },
                    {
                        name: "X",
                        type: "esriFieldTypeDouble",
                        alias: "经度"
                    },
                    {
                        name: "Y",
                        type: "esriFieldTypeDouble",
                        alias: "纬度"
                    }
                ]
    
            }
        });
        map.addLayer(FL_XZQH);
    }
    

Результат QueryTask в порядке, и количество функций равно 18.

Однако, когда я использую map.addLayer, карта просто отображаетодна особенность.

1 Ответ

0 голосов
/ 01 июня 2018

У векторного слоя нет действительного идентификатора объекта.Чтобы исправить это, внесите два изменения:

  1. Измените это:

    selectQuery.outFields = ["NAME", "X", "Y"];

    Для этого (т.е. включите идентификатор объекта в запрос):

    selectQuery.outFields = ["OBJECTID", "NAME", "X", "Y"];

  2. Изменить это:

    { name: "OBJECTID ", type:"esriFieldTypeOID", alias:"OBJECTID" },

    На это (т. Е. Удалить пробел в концеимя поля):

    { name: "OBJECTID", type:"esriFieldTypeOID", alias:"OBJECTID" },

Примечание: это будет работать, только если в сервисе объектов есть поле с именем OBJECTID.

...