Skip to content

OSM 离线地图笔记

免责声明

本文仅用于技术学习,在实际应用中,请确保遵循相关法律法规。

本人完全不认可 OSM 地图中关于中国的定义以及国境线的描述,并且强烈建议您不要依赖于这些信息进行任何商业活动。

如果从事地图相关工作,请认准 标准地图服务,并获取审图号。

OSM 地图下载

推荐使用 OpenStreetMap Data Extracts 来下载 OSM 数据。这个项目提供了多种格式的数据,包括 .pbf(Planet File)和 .shp(Shapefile),适合不同的需求。

如果需要批量下载多个区域的 OSM 数据,可以使用 download-geofabrik 工具来简化这个过程。这个工具可以帮助你快速下载指定范围内的 OSM 数据,并且支持多种格式。

数据转换( 切片 )

.pbf 文件通常包括所有数据,需要先切片后才能使用,我们可以使用 Tilemaker 工具来进行切片。

常见的格式有 MBTilesPMTiles,前者本质上是个 SQLite 数据库,后者是个二进制文件。

MBTiles 适合终端设备离线使用,而 PMTiles 则可以通过 HTTP 范围请求来获取数据( 静态文件托管即可 )。

地图托管

当你有了 MBTilesPMTiles 文件后,可以使用 Tileserver GL 起一个服务来测试地图效果,并且 Tileserver GL 是一个 Node.JS 应用,作为事例代码也是极好的。

地图渲染

最后如果需要在 web 中渲染地图,你需要一个 JavaScript 库来实现。常见的库有 LeafletMapbox GL JS。我更推荐使用 Mapbox GL JS 来渲染地图,另外如果你使用 Vue.js,那么你可以使用 LibreGL 来简化工作,这个库可以让你在 Vue.js 中直接使用 Mapbox GL JS。

其他方案

当我把整个 OSM 离线地图方案研究清楚后,最近又发现了一个 All in one 的打包服务:Protomaps

根据官网描述:Protomaps 是一个开源的交互式网络地图系统。

Protomaps 的主要部分有三个:

  • PMTiles,一种通过 HTTP 范围请求访问的 tile 数据金字塔的开源档案格式。
  • 用于创建、提供和操作 PMTiles 的工具和库生态系统。
  • 一张基于 OpenStreetMap 数据集的地图底图,显示了世界上的道路、水体和标签等特征,并以一个大的 PMTiles 存档形式提供。

具体还没研究,先记下来。

Last updated: