首页 › weekly › 8个开源地图神器,自建地图栈

从切片到导航:8个开源地图神器,把地图栈搬回自己服务器

本期发掘思路

这一期我们把镜头对准一个被低估的赛道:地理空间(Geospatial)。每个带定位按钮的 App 背后都是一张地图,而 Google Maps API 的账单、国内地图厂商的商用配额、以及「用户轨迹数据到底存在谁家」的追问,让越来越多的团队开始自建地图栈。本期沿着「原始数据 → 瓦片生产 → 存储分发 → 前端渲染 → 空间分析 → 路径规划 → 零代码发布」这条完整流水线挖了 8 个仓库,其中 3 个 Star 不到 2000,但个个都处于活跃维护状态,属于「装上就能省真金白银」的类型。

说明:文中 Star 数为截至 2026 年 9 月的量级估算,仅供参考,请以仓库页面实时数据为准。


1. maplibre/maplibre-gl-js — 开源地图渲染的事实标准

仓库:maplibre/maplibre-gl-js | 约 8k+ Star | 活跃维护中

2020 年底,Mapbox 宣布 mapbox-gl-js v2 转为专有许可,社区直接从 BSD 授权的 v1.13 分叉出 MapLibre。四年多过去,它已经从「Mapbox 平替」成长为 WebGL 地图渲染的事实标准:2025 年初发布的 v5 版本带来了 3D 地球投影、地形渲染等原版都未必有的能力。

核心亮点有三:一是样式规范兼容 Mapbox v1 生态,存量项目迁移成本极低;二是全家桶齐全,Android、iOS、React Native 原生绑定同样开源,一套样式五端复用;三是社区治理干净,基金会化运作,不用担心哪天又换许可证。

它解决的就是那个经典痛点:你的地图引擎随时可能被商业公司「断供」。


2. organicmaps/organicmaps — 手机里的完全离线地图

仓库:organicmaps/organicmaps | GitHub 约 6k Star(主力发行在应用商店) | 活跃维护中

Organic Maps 脱胎于被开源的 MAPS.ME 代码,是一款 Android/iOS 完全离线的地图与导航应用:装好后下载离线地图包,搜索、导航、徒步路线(含等高线和高程剖面)全部离线可用,无广告、无追踪、不联网也能跑。对徒步、自驾穿越、出境漫游人群,它是「没信号也不慌」的底气。

工程上也值得拆解:C++ 内核 + 跨平台 UI,地图渲染、地址搜索、路径规划全部自研,不依赖任何在线服务,数据来自 OpenStreetMap 社区。

另一个看点是它的治理风波:据社区公开信与多方报道,2025 年年中创始团队与长期维护者爆发分歧,多数核心贡献者出走另立 CoMaps 分叉。一个明星开源项目如何在治理上翻车,这个案例值得所有想「商业化开源」的团队研读。


3. systemed/tilemaker — 一条命令把 OSM 数据切成矢量瓦片

仓库:systemed/tilemaker | 约 4k Star | 活跃维护中

传统矢量瓦片生产链路又长又重:osm2pgsql 入库 → PostGIS 存 → 渲染服务切片,没有一台像样的服务器玩不转。tilemaker 用 C++ 写成了单一二进制:读入 OSM 的 .pbf 文件,直接输出 MBTiles 或 PMTiles 瓦片包,中间不需要任何数据库和服务器,树莓派都能跑。

配置即图层:默认内置 OpenMapTiles 兼容方案,照着 config.json 改就行;想把河流标成紫色、只保留某类 POI、给自家门店加一个专属图层,都只是改配置文件的事。作者本人就是资深 OSM 社区成员,项目长期稳定迭代。

它是「把地图数据据为己有」的第一步:数据在你手里,切片在你手里,整个链路零外部依赖。


4. protomaps/go-pmtiles — 让地图瓦片像 CDN 上的普通文件一样分发

仓库:protomaps/go-pmtiles | 约 1k Star | 活跃维护中

这是本期最被低估的小仓库之一。PMTiles 是 Protomaps 团队设计的云原生单文件瓦片格式(规格见 protomaps/PMTiles):把整座瓦片金字塔按空间有序压缩进一个文件,浏览器通过 HTTP Range 请求按需读取其中字节,完全不需要瓦片服务器。go-pmtiles 是官方 CLI,提供 convert、extract、serve 三个子命令——转换格式、裁剪区域、本地起服务,各一行命令。

它真正的杀伤力在成本模型:瓦片包扔进 S3、Cloudflare R2 乃至 GitHub Pages 这样的静态托管,就是一个生产级地图服务,没有运维、没有并发瓶颈,流量费用按字节算,边际成本趋近于零。QGIS、GDAL、MapLibre 生态均已支持该格式。

全世界的 Web 地图都在为「瓦片服务器」这件事付冤枉钱,PMTiles 直接把这一层抹掉了。

flowchart LR
  A["OSM 原始数据 pbf"] --> B["tilemaker 切片"]
  B --> C["PMTiles 单文件"]
  C --> D["静态托管 S3 或 R2"]
  D --> E["浏览器直连 pmtiles 协议"]
  E --> F["MapLibre GL JS 渲染"]

5. maplibre/martin — 一条 Docker 命令拉起的生产级瓦片服务器

仓库:maplibre/martin | 约 3k Star | 活跃维护中

PMTiles 解决「静态分发」,martin 解决「动态服务」。这个用 Rust 写的矢量瓦片服务器已并入 MapLibre 组织:直接连 PostGIS 数据库,或托管 MBTiles/PMTiles 单文件,自动生成 TileJSON 元数据,开箱即与 MapLibre、Leaflet 等前端配合。Docker 一行命令跑起来,Rust 异步栈加持下吞吐量轻松打满带宽,资源占用却很小。

它的定位很聪明:不做重型 GIS 中间件,只把「数据库里的空间数据 → 浏览器里的矢量瓦片」这段路修到极致。你的业务数据在 PostGIS 里实时变化,前端地图实时跟着变——这是静态瓦片包做不到的事。

对做位置类 SaaS(外卖调度、车辆监控、资产盘点)的团队,martin 加 PostGIS 基本就是标准答案的骨架。


6. duckdb/duckdb-spatial — 用 SQL 揉搓地理数据的快乐你想象不到

仓库:duckdb/duckdb-spatial | 约 1.5k Star | 活跃维护中

DuckDB 官方空间扩展,本期第二个小而美。在 DuckDB 里执行 INSTALL spatial; LOAD spatial;,你就拥有了一个单机 GIS 分析引擎:内置 GEOS、PROJ、GDAL,几十个 ST_ 空间函数开箱即用,Shapefile、GeoPackage、GeoJSON、Parquet 直接当表读,空间连接自带 R-Tree 加速,百万级点面判断秒级出结果。

传统 GIS 分析要么开重型桌面软件点点点,要么上 PostGIS 起 服务。而 DuckDB 的模型是「分析完即走」:数据是本地的、过程是 SQL 的、结果是 CSV/GeoJSON 随处可交的。配合 WKT 一列存几何,把空间数据混进普通数据管道里毫无违和感。

它正在改变一批数据分析师的工作方式:地理不再是 GIS 专业软件的领地,而是 SQL 查询里的又一张表。


7. valhalla/valhalla — 私有化部署的路径规划引擎

仓库:valhalla/valhalla | 约 4k Star | 活跃维护中

路径规划是地图栈里技术密度最高的一层,valhalla 是这一层最成熟的开源答案。它起源于 Mapzen,Mapzen 关停后由社区持续接手维护至今。C++ 编写,能力覆盖:多模式路径规划(驾车、步行、骑行、摩托车)、等时圈分析、轨迹纠偏(map matching)、考虑高程的骑行路线、turn-by-turn 导航播报数据。数据来自 OSM,用 valhalla_build_tiles 构建路网图后,valhalla_service 即可对外提供 HTTP API。

它的商业地位很实在:不少商业地图 API 服务商以它为底座对外卖路由接口,物流、出行类公司则用它在内网做私有化部署——车队轨迹不出内网,算路能力自己掌控。

如果说 MapLibre 是地图的「脸」,valhalla 就是地图的「腿」。脸可以慢慢换,腿断了的业务一天都跑不了。


8. umap-project/umap — 不写代码,十分钟发布一张交互地图

仓库:umap-project/umap | 约 1.6k Star | 活跃维护中

本期第三个 Star 不到 2000 的宝贝,出自 OSM 法国社区,已经稳定运行了十多年。uMap 解决的是最朴素的需求:让完全不会编程的人,几分钟内做出一张可分享、可嵌入的交互地图。打开网页、选底图、导入 CSV/GeoJSON/KML 或直接在地图上画点画线,调调颜色和图标,保存后拿到一个链接,可以嵌入任何网页。多图层管理、权限控制、协作编辑一应俱全。

社区公益组织用它标救援物资点,媒体用它做事件地图,学校用它做校园导览——这些需求传统上都要「找人做个地图」,现在是自己十分钟搞定。官方实例免费可用,数据敏感的组织可以用 Docker 自托管(Django 项目,部署不复杂)。

在「人人都要会点地图」这件事上,uMap 是门槛最低的那扇门,也是把非技术同事拉进开源世界的绝佳教具。


本期横向对比

仓库 类型 Star 量级 上手难度 一句话场景
maplibre-gl-js 前端渲染 约 8k+ ⭐⭐⭐ 网页/App 内嵌地图引擎
organicmaps 移动应用 约 6k ⭐ 完全离线的手机导航
tilemaker 瓦片生产 约 4k ⭐⭐ OSM 数据一键切片
go-pmtiles 格式与 CLI 约 1k ⭐⭐ 单文件瓦片、静态托管
martin 瓦片服务 约 3k ⭐⭐ PostGIS 实时出图
duckdb-spatial 空间分析 约 1.5k ⭐⭐ 用 SQL 做地理分析
valhalla 路径规划 约 4k ⭐⭐⭐⭐ 私有化算路引擎
umap 零代码建图 约 1.6k ⭐ 十分钟发布交互地图

开源地图栈全景

mindmap
  root((开源地图栈))
    渲染层
      MapLibre GL JS
      Organic Maps
    数据与瓦片
      tilemaker
      go-pmtiles
    服务层
      martin
    分析层
      DuckDB Spatial
    规划层
      Valhalla
    零代码入口
      uMap

本期之最

参考来源

  1. maplibre/maplibre-gl-js — 开源 WebGL 地图渲染引擎,本期渲染层主角
  2. systemed/tilemaker — OSM 数据直切矢量瓦片的命令行工具
  3. protomaps/PMTiles — 云原生单文件瓦片格式规格与生态
  4. valhalla/valhalla — 开源多模式路径规划引擎
  5. organicmaps/organicmaps — 完全离线的开源地图导航应用
  6. umap-project/umap — OSM 法国社区的零代码地图发布工具

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入