尝试一下在线预览 客户端要素查询在应用程序应立即提供结果,以响应用户输入的情况下是很有用。通过对 LayerView 的查询,没有到服务器的往返。在这个示例中,用户可以绘制多边形、折线或点几何图形,然后将其用作查询中的空间 几何参数。
在 SceneLayerView 上运行查询之前,定义了希望接收到的关于匹配要素的统计信息。这是通过给 outStatistics 分配一个 StatisticDefinition 数组并在 SceneLayerView 上调用 queryFeatures 来实现的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const query = sceneLayerView.createQuery();
query.geometry = sketchGeometry;
query.outStatistics = [
...
{
onStatisticField:
"CASE WHEN (yearCompleted >= '1975' AND yearCompleted <= '1999') THEN 1 ELSE 0 END",
outStatisticFieldName: "year_1975",
statisticType: "sum"
},
...
];
sceneLayerView.queryFeatures(query).then((response) => {
console.log("Statistics", response.features[0].attributes)
});
用于查询的多边形、折线或点是使用 SketchViewModel 绘制的。我们通过在绘制多边形、折线或点的视图和 GraphicsLayer 中传递信息来定义 SketchViewModel 。还可以为多边形、折线或点设置符号:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// use SketchViewModel to draw polygons that are used to query
const sketchViewModel = new SketchViewModel({
layer: graphicsLayer,
view: view,
polygonSymbol: {
type: "polygon-3d",
symbolLayers: [
{
type: "fill",
material: {
color: [255, 255, 255, 0.8]
},
outline: {
color: [211, 132, 80, 0.7],
size: "10px"
}
}
]
}
});
sketchViewModel.on("create", (event) => {
if (event.state === "complete") {
sketchGeometry = event.graphic.geometry;
performQuery();
}
});