我正在使用Bootleaf IAG 框架。
我不知道如何获得过滤层的边界坐标。
我正在修改 bootleaf 代码以使用多边形图层查询点。Query Widget 已经允许用户绘制多边形,但我想从我的 arcgis 服务器上托管的图层中选择一个多边形。我通过删除文本字段并允许我的用户从下拉菜单中选择多边形图层和值来修改过滤器小部件。这工作正常。
现在我需要获取layer.setWhere(where, handleError);
代码的结果,并使用下面的查询来满足它。我需要selectedPolygon
等于并使用查询部分中layer.setWhere(where, handleError);
的边界坐标。.within
我已经尝试了很多东西,,,,L.latLngBounds
等等getBounds()
,toGeoJSON().features[0].geometry.coordinates
但我不知道如何拉出界限。什么是正确的代码?
const query = L.esri.query({ url: pointInPolygonUrl })
.token(pointInPolygonData.token)
.within(selectedPolygon)
query.run(function (error, data, response) {
if (error) {
console.log(error);
return;
}
6/8/2021 编辑(基于 Seth Lutske 的评论:
我没有提供代码沙箱有两个原因:1 - bootleaf 有很多文件,2 - 我的所有层都需要安全登录到 arcgis。希望我能提供足够的信息以在没有它的情况下获得帮助。
正在
selectedPolygon
改变我期待的方式吗?目前没有调用变量,selectedPolygon
因为我无法弄清楚格式化它的正确方法。selectedPolygon
就是我要调用的过滤结果layer.setWhere(where, handleError);
。我将多边形图层设置为随着值的变化在地图上进行过滤。我可以验证它是否按预期过滤。selectedPolygon
格式 - 这是我的问题所在。根据 bootleaf 层的配置方式,我似乎无法找到正确的格式。我开始var selectedPolygon =
layer.features.geometry.coordinates;
并得到一个几何未定义的错误。我继续尝试我能想到的所有其他代码来获得界限。边界坐标可能不是正确的术语。我想运行一个查询来查找过滤多边形内的所有点。为了实现这一点,我的理解是我需要在
within
查询部分中使用过滤多边形的边界。
2021 年 6 月 8 日编辑 #2
此链接可能最有利于显示图层的构建方式。我修改了这段代码以删除文本输入并添加一个下拉列表,但基本定义应该相同。
第 1605 行是function addFilter()
第 1804 行是function applyFilter()
第 1927 行是layer.setWhere(where, handleFilterError);
照片1:console.log("polygon layer", layer)
照片 2: 展开_layers
照片3:展开_rings
(我没有找到ToGetJSON
,但我ToGeoJSON
在这个部分找到了。
看起来如果我能做到那_rings
我应该没问题,但这就是我缺乏知识的地方。