问题描述
预期效果
当用户点击多边形要素(县、地区或社区/市镇)或使用“绘制”小部件时,仪表板卡片会显示由 queryFeatures()
返回的相交点要素的数量(见下文) .
localitiesLayer.queryFeatures(query).then(function(results) {
var queriedLocalities = results.features;
if (queriedLocalities.length > 0) {
var fossilsFound = queriedLocalities.length;
}
}
问题
即使选择了超过 2,000 个点要素,返回的相交要素的最大数量也是 2,000。
在下面的照片中,只有“该地区有 2000 个化石遗址!”什么时候应该返回超过 3,000 个特征。
问题排查
当不是查询 localitiesLayer 要素图层,而是查询要素图层 view 时,该问题已得到解决。这引入了无法解决的问题,即 queryFeatures
返回的位置数量会根据缩放级别而变化(详见 API Reference for queryFeatures of FeatureLayerView)。
由于我似乎无法使用服务器端查询,因此我需要了解为什么会在如此看似随意的数字上发生这种情况。
起初我认为这与要素之间可能存在的拓扑问题有关,但为什么会影响 Draw 小部件生成的多边形?在写这个问题之前,我还在所有要素图层上运行了集成工具,以确保没有任何不重合的多边形。
问题
即使超过 2,000 个点要素与所选多边形相交,为什么 queryFeatures()
上的 localitiesLayer
返回的要素上限为 2,000?
为什么使用要素图层视图进行查询可以解决此问题(尽管如上所述并不是解决此问题的有效方法)?
解决方法
通常,要素服务在一次查询中检索的要素数量是最大的。这就是这里发生的事情。
您可以检查层(LAU_Localities_View - 0)的服务端点以在Max Record Count
中找到这些值,此处设置为2000
。
因此,您必须使用其他一些技术才能获得所有值。一种简单的方法是使用字段作为最后一个索引(例如 OBJECTID
)使用额外条件进行迭代和查询。您必须按索引字段对结果进行排序。