适用于Javascript的ArcGIS API:FeatureLayerCollection并未显示所有功能

时间:2018-06-01 09:28:11

标签: javascript arcgis

This image shows the result of my implementation.

这里的问题是地图中显示的特定图层仅显示代码中传递的一个特征。

我是怎么做到的?

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

  2. 创建Query和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. 为"完成"定义一个事件处理程序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);
    }
    
  4. QueryTask的结果很好,功能的数量是18。

    但是,当我使用map.addLayer时,地图只显示一个功能。

1 个答案:

答案 0 :(得分:0)

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

  1. 更改此内容:

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

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

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

  2. 更改此内容:

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

    对此(即删除字段名称末尾的空格):

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

  3. 注意:仅当要素服务实际上有一个名为OBJECTID的字段时才会有效。