HistogramRangeSlider

尝试一下在线预览

此示例演示如何创建 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。此属性有两个用途:

  1. 它确定直方图条柱的渲染方式,指示在所选范围中包括和排除哪些条柱。
  2. 它确定用于执行查询、突出显示、选择或过滤要素的 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)
  };
});

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.