admin管理员组

文章数量:1654293

有一个需求,大体是要查询当前范围内的要素,查询半径自定义。设计了一下,用IdentifyTask类刚好满足需求。测试中发现,缓冲区范围之内的要素,丢失了很多。经过排查发现,ArcGIS Server配置默认返回的最大要素数量为1000,因此,查询时,如果要素数量超过了1000,之后的要素默认不显示。

本想考虑做分页查询,没有查询到相关资料,个人推测是identify查询涉及了多个图层,且空间位置不好做顺序索引,所以没有固定的顺序号,导致无法分页。

后来只能想办法,如果个数超1000,则提示一下,范围过大,要素过多。少于1000,则直接显示。

测试发现服务端返回参数如下:


ArcGIS JS官网说明如下:

因此,获取该参数,判断一下展示即可。

经过测试发现,虽然请求接口返回了该参数,但是通过ArcGIS JS函数,只能获取到results要素数组,无法获取到参数 exceededTransferLimit。

调试后发现,ArcGIS JS类库中,对数据进行了处理,并未返回该参数。

具体路径为  arcgis_js_api\library\4.17\esri\rest\identify.js

修改该类,在类中增加语句即可返回该参数

if(a.exceededTransferLimit){
   b.exceededTransferLimit= a.exceededTransferLimit
}

如下:

刷新后,即可将 exceededTransferLimit参数返回

本文标签: 属性接口jsArcGISexceededTransferLimit