问题描述
我正在尝试使用ArcGIS Javascript API在地图中使用带有GeoJSON服务的Arcade表达式。 Arcade表达式的目的是返回与用户单击的县相交的湖泊数。湖泊和县多边形都是GeoJSON服务。用ArcGIS Feature Layer服务交换Lakes GeoJSON服务可以使表达式正常运行,并返回与县GeoJSON服务相交的湖泊计数。
var template = {
title: "{LABEL}",content: "{expression/countyInfo}",expressionInfos: [
{
name: "countyInfo",title: "Marker Info",expression: `
var lake = FeatureSetByName($map,'Lakes');
var lakeIntersect = Intersects(lake,$feature);
var cnt = Count(lakeIntersect);
return \`
Number of lakes: \${Text(cnt,"####")}
\`
`
}
]
};
我尝试将FeatureSetByName函数中的$ map全局变量更改为其他全局变量选项($ datastore,$ feature,$ layer),但是没有运气。
有人从GeoJSON服务创建功能集成功吗?您是如何声明的?
编辑
解决方法
如果我没记错的话,像FeatureSet
这样的FeatureSetByName
检索方法仅适用于FeatureLayer
。在这方面,您将无法使用GeoJSONLayer
。
关于ArcGIS文档中的FeatureSetByName
根据要素图层在地图或要素服务中的名称来创建要素集。
ArcGIS Arcade - FeatureSetByName
您可以尝试创建FeatureSet
,构造函数将GeoJSON作为参数。然后在脚本中使用此FeatureSet
。
ArcGIS Arcade - FeatureSet type
ArcGIS Arcade - FeatureSet function
另一种选择是检索GeoJSON并使用它创建一个FeatureLayer
。