queryFeatures 没有返回所有相交的特征

问题描述

预期效果

用户点击多边形要素(县、地区或社区/市镇)或使用“绘制”小部件时,仪表板卡片会显示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 个特征。

"2000 fossil sites should be over" 3,000

问题排查

当不是查询 localitiesLayer 要素图层,而是查询要素图层 view 时,该问题已得到解决。这引入了无法解决的问题,即 queryFeatures 返回的位置数量会根据缩放级别而变化(详见 API Reference for queryFeatures of FeatureLayerView)。

由于我似乎无法使用服务器端查询,因此我需要了解为什么会在如此看似随意的数字上发生这种情况。

起初我认为这与要素之间可能存在的拓扑问题有关,但为什么会影响 Draw 小部件生成的多边形?在写这个问题之前,我还在所有要素图层上运行了集成工具,以确保没有任何不重合的多边形。

问题

即使超过 2,000 个点要素与所选多边形相交,为什么 queryFeatures() 上的 localitiesLayer 返回的要素上限为 2,000?

为什么使用要素图层视图进行查询可以解决此问题(尽管如上所述并不是解决此问题的有效方法)?

CodePen of app with bug

解决方法

通常,要素服务在一次查询中检索的要素数量是最大的。这就是这里发生的事情。

您可以检查层(LAU_Localities_View - 0)的服务端点以在Max Record Count中找到这些值,此处设置为2000

因此,您必须使用其他一些技术才能获得所有值。一种简单的方法是使用字段作为最后一个索引(例如 OBJECTID)使用额外条件进行迭代和查询。您必须按索引字段对结果进行排序。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...