首页 > 解决方案 > Mapbox GL JS图层动画低fps

问题描述

我使用以下 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)。以下是我所做的事情:

我没有想法,因为我的图像相对较小,我不会多次从互联网上加载它们并重复使用它们。但是我的fps仍然很低。我开始认为这是 Mapbox GL JS 的限制......

如何提高我的fps?

编辑: 测量updateLayerImage()结果在 45 毫秒到 2 毫秒以下的不同持续时间的性能时间!在里面,updateLayerImage()我在 image_source.js 文件中调用 Mapbox GL JS 的函数来触发一个dataloading事件,我将我的新图像分配给它的图像变量,然后我调用 _finishLoadinig() 来触发一个data事件。一些图像渲染魔法——我认为——需要很多时间。有什么方法可以简单地重新分配图像变量并触发简单的重新绘制?

标签: javascriptperformanceanimationmapboxmapbox-gl-js

解决方案


推荐阅读