尝试一下在线预览此示例演示如何使用 queryFeatures() 方法通过旧金山的犯罪数据在 FeatureLayer 上进行查询。这允许用户设置查询参数,并通过相应的弹出窗口显示查询的响应。
工作原理
当应用程序启动时,UI 将显示查询选项,可以是基本查询,也可以是按距离查询。根据用户在地图上单击的位置调用查询。在应用程序中单击某个位置后,将调用此函数。FeatureLayer 有许多方法用于对其数据执行查询。queryFeatures() 方法允许用户基于输入查询对象查询 FeatureLayer 中的要素。此方法返回一个可以使用 .then()
访问的 FeatureSet Promise。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function queryFeatures(screenPoint) {
const point = view.toMap(screenPoint);
layer.queryFeatures({
//query object
geometry: point,
spatialRelationship: "intersects",
returnGeometry: false,
outFields: ["*"],
})
.then((featureSet) => {
// set graphic location to mouse pointer and add to mapview
pointGraphic.geometry = point;
view.graphics.add(pointGraphic);
// open popup of query result
view.popup.open({
location: point,
features: featureSet.features
});
});
}
如果用户选择“按距离查询”,则两个参数(距离和单位)将添加到作为 layer.queryFeatures()
的输入的查询对象中,返回要素中距离用户单击地图的位置 0.5 英里以内的任何项目。突出显示的第一个要素不一定与最初单击的要素相同,但可以通过单击弹出窗口底部的箭头来查看查询生成的每个要素。
1
2
3
4
5
6
7
8
9
layer.queryFeatures({
geometry: point,
// distance and units will be null if basic query selected
distance: 0.5,
units: "miles",
spatialRelationship: "intersects",
returnGeometry: false,
outFields: ["*"],
})
另请参阅从 FeatureLayer 查询要素。