ArcGIS API for Javascript:FeatureLayerCollection 未显示所有要素

ArcGIS API for Javascript: FeatureLayerCollection doesn't displaye all the features

This image shows the result of my implementation.

这里的问题是地图中显示的要素图层仅显示代码中传递的要素之一。

我是怎么做到的?

  1. 使用 new FeatureLayer(featureCollectionObject, options?) 创建要素图层。

  2. 创建查询和查询任务以从 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. 为 queryTask 的 "complete" 定义事件处理程序。

    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 时,地图只显示一项功能。

要素图层没有有效的对象 ID。进行两项更改以修复它:

  1. 改变这个:

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

    为此(即在您的查询中包含对象 ID):

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

  2. 改变这个:

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

    对此(即去掉字段名末尾的space):

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

注意:这仅在要素服务实际具有名为 OBJECTID 的字段时才有效。