This image shows the result of my implementation.
这里的问题是地图中显示的特定图层仅显示代码中传递的一个特征。
我是怎么做到的?
使用new FeatureLayer(featureCollectionObject, options?)
创建要素图层。
创建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);
为"完成"定义一个事件处理程序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
时,地图只显示一个功能。
答案 0 :(得分:0)
要素图层没有有效的对象ID。进行两项更改以修复它:
更改此内容:
selectQuery.outFields = ["NAME", "X", "Y"];
对此(即在查询中包含对象ID):
selectQuery.outFields = ["OBJECTID", "NAME", "X", "Y"];
更改此内容:
{
name: "OBJECTID ",
type:"esriFieldTypeOID",
alias:"OBJECTID"
},
对此(即删除字段名称末尾的空格):
{
name: "OBJECTID",
type:"esriFieldTypeOID",
alias:"OBJECTID"
},
注意:仅当要素服务实际上有一个名为OBJECTID
的字段时才会有效。