Mapbox GL JS .setData() 循环性能优化

Mapbox GL JS .setData() loop performance optimization

每 50 毫秒,我从服务器接收更新,然后像这样更新我的 Mapbox GL JS 中的点数据:

    map
      .getSource('pointsSource')
      .setData(pointsData);

当我发现我的笔记本电脑进入 turbo 模式并使用了 200% 的 CPU 时,戏剧就开始了,而我没有做的地方 .setData()(不更新数据,只显示地图) 它使用 25%.

工作

在任何给定时间,我只更新 25 个点。考虑到它与点数无关,而是与我非常快地调用 .setData() 这一事实有关,我该如何提高性能?我这样想是因为我用 1 点或 10000 做了实验,结果是一样的 (200% CPU).

我不认为 setData 应该被如此频繁地调用。如果您不需要移动几何体(只是属性),您可以使用 setFeatureState 代替。

或者,至少要停止 window 锁定,您可以在调用 setData() 之前等待 idle 事件:

map.on('idle', () => map.setData(...));