什么是 Leaflet 和 Mapbox,它们有什么区别?

Posted

技术标签:

【中文标题】什么是 Leaflet 和 Mapbox,它们有什么区别?【英文标题】:What are Leaflet and Mapbox, and what are their differences? 【发布时间】:2012-08-29 00:50:39 【问题描述】:

什么是 Leaflet 和 Mapbox,两者有什么区别或用法?它们的 API 有哪些主要区别?

【问题讨论】:

【参考方案1】:

你可以想到

Mapbox 作为地图的 GitHub

OpenStreetMaps 作为 git

Leaflet 作为 git 客户端

ma​​pbox.js 作为 'GitHub for Mac'


让我试着解释一下:

OpenStreetMaps (OSM) 是一个开源项目,用于创建/显示地图和地理数据;就像 git 允许为源代码控制创建提交树。它们都是处理数据的软件。

Mapbox 是一家托管公司,提供基于 OSM 的地图,具有更多功能,而不仅仅是托管;这与 git 项目的 GitHub 情况相同。

Leaflet 是一个图书馆,使用户能够使用 OSM 托管服务在其浏览器上显示/使用基于 OSM 的地图;就像任何 git 客户端正在使用 git 托管服务一样。

mapbox.js 是一个增强的,用于显示/使用托管在 mapbox.com 的地图,它已经基于 OSM;就像 “GitHub for Mac” 客户端是由 GitHub 制作的,用于为托管在其服务器上的项目提供接口。

希望这能澄清你的疑虑。

【讨论】:

可能是最好的一个【参考方案2】:

更新(2014-08-22):

我的回答有点过时了。 Leaflet 和 MapBox 的最新比较请参考@tmcw's answer。


原答案(2012-09-05):

你在比较苹果和橘子。

Leaflet“只是”一个地图 API。它本身不提供数据/地图。 Mapbox 是一种设计和发布地图的服务,其最终结果是存储在云中的一堆生成的地图图块(以及一些 json 文件)。

因此,例如,您可以使用 Leaflet 中的 Mapbox 地图。 Example

无论如何,Mapbox 是由一家名为 DevelopmentSeed 的公司开发的,他们有一个地图 API,它确实是 Leaflet 的竞争对手,称为 Modest Maps,虽然更简单,功能更少。

所以,总结一下:

传单 -> 地图 API,无数据 MapBox -> 设计和发布地图

【讨论】:

只想补充一下,MapBox最近发布了自己的js api:mapbox.com/mapbox.js/api/v0.6.5 只是为了更新:Mapbox API 现在使用 Leaflet 作为其 API,并通过插件扩展以从其服务器检索地图图块。 如果您使用他们的 Mapbox.com 的地图设计/托管服务,您只需要 Mapbox.js,对吗?换句话说,如果你正在构建一个使用非 Mapbox tile 服务、自定义数据库等的自定义应用程序,你只需要使用 Leaflet 吗? @克林特哈里斯。实际上,自从我第一次写这篇文章以来,情况发生了更大的变化。目前 Mapbox.js 只是 Leaflet 之上的一个库,它提供了一些附加功能和智能插件架构。即使您没有使用 mapbox 的设计/托管服务,也可以使用它。 你好。我看到传单正在使用响应式代码,我想在我的项目中使用 ios/android 代码,我该怎么做?【参考方案3】:

这是一个旧帖子,这是我的更新。

Mapbox 现在正在使用传单作为他们的官方 javascript API(我不知道内部工作是什么,但是......我根本无法访问 Modest Maps,而且 Mapbox 在他们的当前网站)。

【讨论】:

【参考方案4】:

另一个答案很好,但有点过时,因为 Mapbox 在两年内发生了重大变化。

Leaflet 是一个 JavaScript API,用于在互联网上制作交互式地图。它可以与 Mapbox 集成,还可以与许多其他图块源(如 OpenStreetMap)和其他数据源(如 GeoJSON overlays)集成。

Mapbox 是一家提供地图服务和技术的公司 - 其中一项服务 Map tiles 可以在 Leaflet 中用作基本地图 - 就像您在 Google Maps API 中使用 Google Map 磁贴一样。 Mapbox 还开发了一个名为 Mapbox.js 的 Leaflet 插件,它可以轻松地与他们的图块集成,同时仍然使用 Leaflet 中的所有强大功能。我们也支持 Leaflet 的开发,因为the maintainer works here。

您可以在不使用 Mapbox 瓦片的情况下使用 Mapbox.js,并将 Leaflet 与 Mapbox 瓦片一起使用 - 它们完全可以混合搭配。 Mapbox.js 的新增功能,如 TileJSON 和 UTFGrid 支持,可以更轻松地与 Mapbox 地图集成,但不会改变 Leaflet 的现有行为。

【讨论】:

Mapbox 现在为浏览器创建了自己的开源 GIS 库:Mapbox GL JS。现在它们之间的主要区别之一是 Mapbox GL JS 使用 WebGL 而 Leaflet 没有。 WebGL,用于映射,在渲染计算量大的事物(即动画,如天气图层,滚动地图)方面要快得多,但与 Leaflet 的解决方案(即,操纵 DOM 以进行样式设置)相比,它的直接控制更少。另见this related question

以上是关于什么是 Leaflet 和 Mapbox,它们有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义创建的 Mapbox 样式(来自 Mapbox Studio)和 Leaflet

空白地图图块 - 错误 410 消失(Mapbox 和 Leaflet JS)

使用Mapbox或Leaflet突出显示多边形

markdown 将Mapbox中的栅格加载到具有透明度的Leaflet或ArcGIS JS API中

如何免费使用传单地图?

如何将完成的多边形点leaflet.draw保存到mysql表