0

预期效果

当用户单击多边形要素(县、地区或邻里/市镇)或使用“绘制”小部件时,仪表板卡会显示返回的相交点要素的数量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 要素图层,而是查询要素图层视图时,该问题已得到修复。这引入了无法解决的问题,即queryFeatures根据缩放级别更改返回的位置数量(详见API Reference for queryFeatures of FeatureLayerView)。

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

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

问题

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

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

有 bug 的应用程序的 CodePen

4

1 回答 1

0

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

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

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

于 2021-01-22T17:35:51.363 回答