尝试一下在线预览此示例演示如何创建 HistogramRangeSlider 微件,并使用它来根据数值属性过滤图层的要素。直方图可以使用 histogram() 统计函数生成。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
view.whenLayerView(layer).then((layerView) => {
// temperature in Celsius
const field = "temp";
const min = 0;
const max = 30;
// generate 100-bin histogram
histogram({
layer: layer,
field: field,
numBins: 100,
minValue: min,
maxValue: max
}).then((histogramResponse) => {
// histogram response contains the histogram bins
// the code block shown below will be placed here
});
});
然后,您可以使用输出条柱和最小值/最大值构造滑块。还必须指示 rangeType。此属性有两个用途:
- 它确定直方图条柱的渲染方式,指示在所选范围中包括和排除哪些条柱。
- 它确定用于执行查询、突出显示、选择或过滤要素的 SQL where 子句。
在这种情况下,rangeType 是 between
将渲染在滑块轨道上,并且两个拇指之间的所有值都将包含在选择/查询/过滤器中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const slider = new HistogramRangeSlider({
bins: histogramResponse.bins,
min: min,
max: max,
values: [min, max],
excludedBarColor: "#524e4e",
rangeType: "between",
container: document.getElementById("slider-container")
});
slider.on(["thumb-change", "thumb-drag", "segment-drag"], (event) => {
// field is "temp"
filterByHistogramRange(field);
});
const filterByHistogramRange = promiseUtils.debounce((field) => {
layerView.filter = {
// generates the where clause for filtering features
where: slider.generateWhereClause(field)
};
});