我使用以下Javascript代码为地图上的雷达图层设置动画:
function updateLayer() {
window.requestAnimationFrame(updateLayer);
var now = Date.now();
elapsed = now - then;
if (elapsed > fpsInterval) {
//fpsInterval being 1000 / 10 or 1000 / 60
then = now - (elapsed % fpsInterval);
updateLayerImage();
}
}
updateLayerImage()以5分钟为间隔循环浏览最近3个小时的雷达图像。
但是,这会导致动画非常慢(约1-2 fps)。这是我所做的事情:
我没有主意,因为我的图像相对较小,所以我不会多次从Internet加载它们并重复使用它们。但是我的fps仍然很低。我开始认为这是Mapbox GL JS的局限性...
如何提高fps?
编辑:
测量updateLayerImage()
的执行时间会导致持续时间从45毫秒变化到2毫秒以下!在updateLayerImage()
内部,我在触发dataloading
事件的image_source.js文件中调用Mapbox GL JS的函数,将新图像分配给它的图像变量,然后调用_finishLoadinig()激发{{1 }}事件。我认为,这种图像渲染魔术中的一些需要花费很多时间。有什么方法可以简单地重新分配image变量并触发简单的重新绘制?