一般来说 Leafletjs 和 Mapbox.js 是相同的,但是 Mapbox.js 有插件和扩展,它们包装 Leaflet 并绑定到 Mapbox 的服务(例如方向)。其他公司或产品也存在类似的插件和功能,Leaflet 可以使用它们来补充或代替 Mapbox。基于 Leaflet 的库通常具有更好的旧版浏览器支持、使用光栅图块等。也就是说,正在添加的功能包括矢量图块(pbf、mvt 等)和各种渲染器(包括 webgl)等现代功能。
Mapbox-gl-js 和原生变体 mapbox-gl是高性能的开源库,围绕矢量图块(pbf、mvt)和 webgl 进行了高度优化,用于渲染到画布元素(用于 -js 变体)。它是相对较新的,因此使用 Leaflet 可以轻松完成的一些事情可能会有所不同或具有挑战性(截至 2016 年 4 月),这表示它们非常相似并且运行良好,包括在移动设备上(过去几年,例如 iphone 5s )。一个随机怪癖的例子是以色列的希伯来语标签,从右到左阅读,是落后的,看起来像胡说八道(这是一个正在解决的开放问题)。
如果放弃旧的浏览器支持是可以的,那么 Mapbox-gl(-js) 路线可能是一个不错的选择。在我有限的经验(使用它几个月)中,它总体上具有最佳的用户+开发人员体验,并且 Mapbox 在其工程/输出方面一直保持一致。我对他们的付费服务的经验较少,并且不清楚他们的图书馆与这些服务的耦合程度。对于一个移动项目,在查看了 Google 地图、Leaflet v0.7 和 v1 之后,我转向了 mapbox-gl-js,这似乎是一个不错的决定。
我开始使用 Mapbox-gl-js 之前的 Leaflet 经验和 HTML/CSS/JS 熟练程度,发现入门和示例都有助于理解技术细节。包括如何使用 JSON(不是 CSS)设置地图样式。还要仔细看看服务条款,这是一个重要的积极差异化因素,尤其是与谷歌相比。Mapbox 的服务在美国以外没有最强大的覆盖范围,因此请务必对此进行一些评论(根据我的经验,通常可以使用其他提供商,因此这不一定会影响采用图书馆的决定,它们是与 Mapbox 功能或标准非常紧密地耦合)。