与旧的Mapbox.JS相比,Mapbox GL JS性能较差

与旧的Mapbox.JS相比,Mapbox GL JS性能较差,mapbox,mapbox-gl-js,Mapbox,Mapbox Gl Js,我正在将路线规划web应用程序从Mapbox.js重写为Mapbox GL js库 几乎实现了所有功能后,由于延迟、动画不平滑以及贴图层的总体缓慢,它几乎无法使用 现在,完全有可能我用错了API。我做了一个快速的比较,并将其发布在这里: 请注意,旧的Mapbox.js(左)比新的Mapbox GL js(右)平滑得多 在这两个贴图都在移动和缩放时,您可以更清楚地看到差异: 这只是一个基本的例子。该应用程序本身还具有以下功能: 动态样式化路线(交通、空气质量、海拔) 覆盖地图的丰富用户界面

我正在将路线规划web应用程序从
Mapbox.js
重写为
Mapbox GL js

几乎实现了所有功能后,由于延迟、动画不平滑以及贴图层的总体缓慢,它几乎无法使用

现在,完全有可能我用错了API。我做了一个快速的比较,并将其发布在这里:

请注意,旧的
Mapbox.js
(左)比新的
Mapbox GL js
(右)平滑得多

在这两个贴图都在移动和缩放时,您可以更清楚地看到差异:

这只是一个基本的例子。该应用程序本身还具有以下功能:

  • 动态样式化路线(交通、空气质量、海拔)
  • 覆盖地图的丰富用户界面
  • 附加层(如自行车道、POI、空气质量)
由于所有这些特性,Mapbox GL JS几乎无法使用。与旧的Mapbox.js不同,它是平滑的


任何优化性能的建议都将受到赞赏

需要注意的是,较旧的Mapbox.js库提供的是光栅图块,它在服务器端进行渲染,而更现代的Mapbox GL-js是基于矢量的,在客户端进行渲染。由于光栅与矢量的性质,如果严格关注FPS,您可能会看到性能的“下降”,因为您的机器可能会遇到困难

与其他传统JavaScript映射库一样,Mapbox.js使用basemap覆盖映射约定。basemap(或baselayer)是一个已从服务器渲染的光栅平铺层,覆盖层通常是位于basemap顶部的矢量数据

Mapbox GL JS在基本层和覆盖层之间没有区别,并且主要使用矢量平铺。这意味着可以使用JavaScript修改标签和图标等地图细节以及街道和建筑物等元素,就像早期地图库中的覆盖一样。每个层都提供了渲染器应如何在浏览器中绘制特定数据的规则,渲染器使用这些层在屏幕上绘制地图

您可以在此处了解更多有关差异的信息:


还有一些很棒的指南,老实说,我看不出你在抱怨什么。可能特定于您的操作系统和浏览器?也许录制一段视频?Mapbox GL JS确实需要更长的放大时间,但如果您不喜欢,可以对其进行调整。但是你说Mapbox GL JS作为一个整体是“边缘不可用”的说法是,嗯,边缘荒谬的。@SteveBennett没有抱怨,正在寻求建议(正如我在问题中所写的)-你读过吗?尝试了多个浏览器和操作系统。不需要视频-我提供了一个并排的演示,在这里你可以看到FPS的差异,即使内容很少。随着层数的增加,情况只会变得更糟。我的观点是,新的库比旧的库慢得多,这真的很奇怪,我正在寻找瓶颈。我对“性能”抱怨的经验是,对一个人来说,明显的“性能差”实际上是非常主观的。这就是为什么我要求你更具体(客观)地说明你需要帮助解决的问题。@SteveBennett所有问题本质上都是主观的,因为它们基于对我们周围世界的当前理解和认知。2+2是什么?小心你的回答,因为在黑洞的中心,它可能是无限的。你不是在争论更好的问题,你是在争论没有人应该问问题,因为这样做总是会导致主观的答案。我想帮你。正如我所说,我无法从演示中看出您关心的是什么性能问题。无论哪一方的表现是好是坏。所以我要求你具体点。我不确定你怎么认为攻击我会让你进步。