我正在使用跨越北美的约 150,000 条折线。在所有行中,我想从每行的开头到结尾绘制/动画。我开始了向数组添加顶点和更新 Mapbox 源的过程,就像这个例子一样。考虑到整个数据集的大小,这是不可行的。在 geojson 形式中,它大约是 800mb,在浏览器中操作它似乎是不合理的。
作为一种替代方法,我将每条折线分成长度相同的 10 公里段。我在每个段上添加了一个属性,表示它距起点的百分比距离。我在下面创建了一个触发 setFilter 事件的间隔,根据从开始的百分比过滤段。
currentLinPos=0;
lineInterval=setInterval(function(){
currentLinPos+=.01;
if(currentLinPos>0.9999){
currentLinPos=0
}
map.setFilter('lines',['<','linePrc',currentLinPos])
}, 250);
即使在处理一小部分数据时,性能也会波动和滞后。我希望 Mapbox GL 能得到更好的结果,但也许我需要重新考虑我的数据结构或方法。或者在这里使用像DECK.GL这样的东西会更好吗?