具有大矢量平铺数据集和Mapbox GL JS

时间:2018-01-29 16:00:00

标签: google-maps leaflet webgl mapbox mapbox-gl-js

我正在开发一个项目,使用大点数据集(同时显示多达数十万个点)在Google地图上用Pixi.JS在浏览器中呈现为动画热图。这些点具有时间戳,并在客户端动态过滤,遵循时间范围过滤器。

这种方法开始显示其在性能方面的限制(巨大的CPU瓶颈),因此我正在研究基于Mapbox GL JS的解决方案来渲染这些点。

到目前为止,我一直没有成功地获得有这么多分的平滑动画,看了3种不同的方法:

  1. 使用setFilter更新显示的点:
  2. map.setFilter('layer', ['all', ['>', 'datetime', t0], ['<', 'datetime', t1]])

    1. 使用setPaintProperty和GL JS表达式更改点的可视属性:
    2. map.setPaintProperty('layer', 'circle-radius', [ 'case', ['<', ['number', ['get', 'datetime']], t], 5, ['>', ['number', ['get', 'datetime']], t], 0, 0 ])

      这两种方法都很慢,或者更确切地说,某些可接受的帧率是可达的,但用户交互和视觉更新之间存在巨大的延迟。

      1. Ryan Baumann建议使用setData来更新输入数据集:MapBox GL JS marker/icon animation slow performance
      2. 该方法的问题在于它不适用于以矢量切片形式出现的大数据集。即使尝试使用大型GeoJSON文件,结果也会与前两种方法一样慢。

        我准备探索某种可能位于我的矢量图块和Mapbox GL JS之间的自定义渲染器/着色器,但是自定义webGL图层类型似乎处于开发阶段:

        https://github.com/mapbox/mapbox-gl-js/issues/281

        由于

        埃里克

1 个答案:

答案 0 :(得分:1)

你可以看看'deck.gl',它通过覆盖到mapboxgl地图的大型数据集来宣传效果良好。我没有直接的经验,所以我可以说更多。

https://github.com/uber/deck.gl