ArcGIS API for Javascript:FeatureLayerCollection 未显示所有要素
ArcGIS API for Javascript: FeatureLayerCollection doesn't displaye all the features
This image shows the result of my implementation.
这里的问题是地图中显示的要素图层仅显示代码中传递的要素之一。
我是怎么做到的?
使用 new FeatureLayer(featureCollectionObject, options?)
创建要素图层。
创建查询和查询任务以从 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);
为 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。进行两项更改以修复它:
改变这个:
selectQuery.outFields = ["NAME", "X", "Y"];
为此(即在您的查询中包含对象 ID):
selectQuery.outFields = ["OBJECTID", "NAME", "X", "Y"];
改变这个:
{
name: "OBJECTID ",
type:"esriFieldTypeOID",
alias:"OBJECTID"
},
对此(即去掉字段名末尾的space):
{
name: "OBJECTID",
type:"esriFieldTypeOID",
alias:"OBJECTID"
},
注意:这仅在要素服务实际具有名为 OBJECTID
的字段时才有效。
This image shows the result of my implementation.
这里的问题是地图中显示的要素图层仅显示代码中传递的要素之一。
我是怎么做到的?
使用
new FeatureLayer(featureCollectionObject, options?)
创建要素图层。创建查询和查询任务以从 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);
为 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。进行两项更改以修复它:
改变这个:
selectQuery.outFields = ["NAME", "X", "Y"];
为此(即在您的查询中包含对象 ID):
selectQuery.outFields = ["OBJECTID", "NAME", "X", "Y"];
改变这个:
{ name: "OBJECTID ", type:"esriFieldTypeOID", alias:"OBJECTID" },
对此(即去掉字段名末尾的space):
{ name: "OBJECTID", type:"esriFieldTypeOID", alias:"OBJECTID" },
注意:这仅在要素服务实际具有名为 OBJECTID
的字段时才有效。