arcgis-js-api - 从 hitTest() 返回的几何在用作查询几何时抛出“无效的查询参数”
问题描述
预期效果
当用户单击视图时,hitTest() 从可见多边形返回几何图形,这些几何图形将用于按localitiesLayer
(点要素)上的位置进行查询。下面的代码片段和照片展示了所需的行为。
view.on("click", function(event) {
selectFeaturesFromClick(event);
});
function selectFeaturesFromClick(clickEvent) {
var includeLayers = [countiesLayer, neighborhoodsLayer, regionsLayer, clientFeatureLayer]
view.hitTest(clickEvent, {include: includeLayers}).then(function(response) {
if (response.results.length > 0) {
selectFeatures(clickFeature);
}
});
}
function selectFeatures(feature) {
var geometry = feature.geometry;
var query = {
geometry: geometry,
spatialRelationship: "intersects",
outFields: ["*"],
returnGeometry: true
}
localitiesLayer.queryFeatures(query).then(function(results) {
...
});
}
问题
单击托管要素图层countiesLayer
中的某些要素时,无法完成查询请求并显示以下错误消息:“无法执行查询。无效的查询参数”。
无论出于何种原因,大多数功能似乎都会发生这种情况,但并非所有功能都会发生这种情况。如上图所示,当单击“Riverside”而不是“Los Angeles”时,它按预期工作,如下图所示。
故障排除
起初我认为这可能与 localityLayer 在 时未加载有关.query()
,但这并不能说明其他要素层工作得很好。
我似乎无法弄清楚似乎有效的功能和无效的功能会有什么不同。命中测试中包含的其他要素图层似乎按预期工作。
更新
- 当其中一个
LayerView
用于localitiesLayer
查询时,应用程序按预期工作。但是,我宁愿不必不断更新 LayerView,因为当用户不断平移/缩放地图时,它似乎会影响性能。此外,我在从 LayerView 查询所有字段时遇到问题。 - 根据用户 Arno Fiva 对使用该
createQuery()
方法的建议,它现在反映在下面链接的 CodePen 中。建议的解决方案仍然存在该问题。
问题
这是否与我编写的方式特别相关hitTest()
?我在应用程序中包含了指向 CodePen 的链接,供任何想要查看的人使用。
解决方案
与其Query
从头开始创建对象,不如让层先创建一个查询,然后使用其他参数对其进行扩展:
var query = localitiesLayer.createQuery();
query.geometry = geometry;
query.spatialRelationship = "intersects";
query.outFields = ["*"];
query.returnGeometry = true;
localitiesLayer.queryFeatures(query).then(function(results) {
...
});
当图层创建查询时,它将预先填充所有必要的参数以避免您在上面描述的错误消息。有关FeatureLayer.createQuery()
更多信息,请参阅。至于为什么它有时有效而有时无效,必须进行调查,甚至在 REST API 方面也是如此。
推荐阅读
- node.js - Windows中grep的npm安装错误
- java - 如何通过 getAttribute() 或 executeScript() 方法提取输入字段的值?
- python - “查询”字典的 Pythonic 方式
- javascript - 获取变体列表中的每个尺寸 ID
- go - 根据值匹配数组
- angular - 从 HttpInterceptor 中的 catchError 返回可观察到的已捕获错误会导致错误循环
- html - Flexbox 内容在表格中有一个像素偏移
- sql-server - 在 SQL 中获取具有连续月份范围的行
- javascript - 转换表单编号字段值结构
- python - 如何使 Django 数据库缓存的条目过期?