这篇文章主要记录下解决MapBox数据替换的过程吧。
最开始接触到项目时,使用的是geojson数.
但是缺点很明显,geojson数据量很大,我们的数据繁多,一次有可能加载10*15个geojson数据,显然是不太可能的。
之后接触到了mbtiles文件,可以参考我的博客:
https://blog.csdn.net/weixin_42655593/article/details/86699224blog.csdn.net使用到了tippecanoe,这简直就是神器!
在不改变原始数据的情况下,可以将2M大小的geojson文件转换为100K左右的mbtiles文件。
前端请求时,只请求当前页面所需的pbf文件,一个pbf文件只有10多KB。
完美解决的数据量巨大的问题。但新的问题随之而来,频繁的数据源切换,导致了页面刷新数据源的时候会有卡顿的效果,即屏幕一闪一闪的,严重的影响了使用体验。
再之后就开始忙其他的项目,当其他的项目快要完成后,再次提出了这个气象替换的问题。
当初考虑的方向错了,一直认为每个时间段的气象数据需要请求一次,没有想过多个时间段的数据放置在一个文件内,并通过mapbox的filter机制来控制显示什么气象数据。显然这样是正确的。
不知道知乎发布文章时如何插入网络图片,凑合的看下吧。
http://image.xiaofsu.com/FieIEXjIIBuNV9OksiKiP9JrCx_6image.xiaofsu.com虽然领导现在对于目前的情况还是比较满意的,但是长路漫漫,还是需要去继续探索,例如windy的粒子效果,以及气象替换时的不平滑性(与源数据有关,但是可能可以通过http://d3js.org来解决这个平滑),也是问题存在。
http://image.xiaofsu.com/lpma96Ud_RvXHYZvvMrjgdDzMB8Vimage.xiaofsu.com整个经过过程可以参考我在github上的issue:
How to change vector tile data in mapbox? · Issue #8244 · mapbox/mapbox-gl-jsgithub.com文中大概提起到了问题的发生原因以及解决过程。