Skip to content

OSM 离线地图笔记 ​

免责声明

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

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

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

OSM 地图下载 ​

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

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

数据转换( 切片 ) ​

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

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

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

地图托管 ​

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

地图渲染 ​

最后如果需要在 web 中渲染地图,你需要一个 JavaScript 库来实现。常见的库有 Leaflet 和 Mapbox 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: