有没有可能在WebGlPointsLayer上实现多过滤

IT技术 javascript reactjs openlayers
2021-05-17 22:43:34

我正在使用 React、OpenLayers 和https://tileserver.readthedocs.io/en/latest/index.html为我的 WebGlPointLayer 获取 src。我有很多数据要在最高变焦上显示。现在我要创建一些过滤器,所以按照 OpenLayers 示例(https://openlayers.org/en/latest/examples/filter-points-webgl.html)我已经为我的项目做了同样的事情。问题是多个过滤器的实现。过滤器由 style.variables 和 style.filter 完成。

{
    variables: defaultVariables,
    filter: ['between', ['get', 'i'], ['var', 'volumeMnemonicsFrom'], ['var', 'volumeMnemonicsTo']],
    symbol: {
      symbolType: 'circle',
      size: [10, 10],
      color,
      rotateWithView: false,
      offset: [0, 0],
    },
  }

是否有可能通过 WebGLPointsLayer 样式属性实现多个过滤器?

1个回答

您需要做的只是使用“all”表达式并将所有过滤器定义作为它的参数。像这样的东西:

  filter: ['all', 
    ['between', ['get', 'i'], ['var', 'volumeMnemonicsFrom'], ['var', 'volumeMnemonicsTo']],
    ['between', ['get', 'anotherFilterField'], ['var', 'minAnotherFilterField'], ['var', 'maxAnotherFilterField']],
  ],

您可以在此处查看表达式的源代码遗憾的all是,在 openlayers页面中WebGlPointsLayer 的原始示例中缺少