<!-- title: 8个开源地图神器，自建地图栈 -->

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

## 本期发掘思路

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

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

---

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

**仓库**：[maplibre/maplibre-gl-js](https://github.com/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 原生绑定同样开源，一套样式五端复用；三是社区治理干净，基金会化运作，不用担心哪天又换许可证。

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

- **上手难度**：⭐⭐⭐（需要前端基础，但文档和示例非常完善）
- **适用人群**：前端工程师、需要内嵌地图的 SaaS 产品、数据可视化团队
- **变现思路**：基于 MapLibre 做行业定制渲染引擎（园区、工地、楼宇级地图），或输出私有化地图 SDK——这类外包需求在政企市场常年存在

---

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

**仓库**：[organicmaps/organicmaps](https://github.com/organicmaps/organicmaps) | GitHub 约 6k Star（主力发行在应用商店） | 活跃维护中

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

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

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

- **上手难度**：⭐（普通用户装 App 即用，编译参与开发则有门槛）
- **适用人群**：户外爱好者、出境旅行者、隐私敏感用户
- **变现思路**：离线地图包制作与分发的生意——景区、博物馆、邮轮、航空离线娱乐系统，都是「不许联网但需要地图」的真实付费场景

---

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

**仓库**：[systemed/tilemaker](https://github.com/systemed/tilemaker) | 约 4k Star | 活跃维护中

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

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

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

- **上手难度**：⭐⭐（一条命令，主要时间花在调图层配置）
- **适用人群**：需要离线地图包的独立开发者、GIS 工程师
- **变现思路**：为景区、展会、校园定制「单栋建筑级」离线地图包，一次切片、按份售卖

---

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

**仓库**：[protomaps/go-pmtiles](https://github.com/protomaps/go-pmtiles) | 约 1k Star | 活跃维护中

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

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

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

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

- **上手难度**：⭐⭐（CLI 工具，会命令行即可）
- **适用人群**：独立开发者、前端工程师、想给静态博客加地图的人
- **变现思路**：按区域销售的离线/轻量地图数据包；给客户交付「一个文件 + 静态托管」的地图方案，交付成本和续费空间都漂亮

---

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

**仓库**：[maplibre/martin](https://github.com/maplibre/martin) | 约 3k Star | 活跃维护中

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

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

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

- **上手难度**：⭐⭐（有 Docker 和 PostGIS 基础即可，半小时上线）
- **适用人群**：后端工程师、位置服务平台开发团队
- **变现思路**：作为私有化交付项目的地图中台组件，随整体方案打包收费；也适合做行业实时地图的 POC 快速验证

---

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

**仓库**：[duckdb/duckdb-spatial](https://github.com/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 查询里的又一张表**。

- **上手难度**：⭐⭐（会 SQL 就会它）
- **适用人群**：数据分析师、商业选址、需要批量处理地理数据的后端
- **变现思路**：门店选址、配送范围（等时圈）分析、广告投放圈选等咨询服务，工具免费、洞察收费

---

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

**仓库**：[valhalla/valhalla](https://github.com/valhalla/valhalla) | 约 4k Star | 活跃维护中

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

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

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

- **上手难度**：⭐⭐⭐⭐（构建路网数据重、调参多，需要耐心）
- **适用人群**：物流/出行平台后端团队、需要批量算路的 GIS 工程师
- **变现思路**：两个方向：物流调度系统的私有化部署（企业付费意愿强），或基于它包装垂直场景 API（两轮车导航、徒步路线规划）对外收费

---

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

**仓库**：[umap-project/umap](https://github.com/umap-project/umap) | 约 1.6k Star | 活跃维护中

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

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

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

- **上手难度**：⭐（真·零代码）
- **适用人群**：NGO、媒体编辑、教师、任何「只想快速标几个点」的人
- **变现思路**：给政府、社区、文旅单位做「一张图」项目的快速交付工具——需求浅、周期短、复购率高

---

## 本期横向对比

| 仓库 | 类型 | 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 | ⭐ | 十分钟发布交互地图 |

## 开源地图栈全景

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

## 本期之最

- **最值得立即尝试：go-pmtiles**。十分钟内你就能把一份地图数据变成「一个文件 + 一个 URL」的生产级服务，成本模型直接改写，成就感也最即时。
- **最有商业潜力：valhalla**。算路能力是出行物流业务的刚需底座，私有化部署的付费意愿明确，且开源方案里几乎没有同量级对手。
- **最被低估：duckdb-spatial**。它把空间分析从 GIS 专业软件的领地里解放出来，塞进了每个数据分析师都已有的 SQL 工作流——这种「范式迁移」型的项目，价值往往在爆发后才被追认。

## 参考来源

1. [maplibre/maplibre-gl-js](https://github.com/maplibre/maplibre-gl-js) — 开源 WebGL 地图渲染引擎，本期渲染层主角
2. [systemed/tilemaker](https://github.com/systemed/tilemaker) — OSM 数据直切矢量瓦片的命令行工具
3. [protomaps/PMTiles](https://github.com/protomaps/PMTiles) — 云原生单文件瓦片格式规格与生态
4. [valhalla/valhalla](https://github.com/valhalla/valhalla) — 开源多模式路径规划引擎
5. [organicmaps/organicmaps](https://github.com/organicmaps/organicmaps) — 完全离线的开源地图导航应用
6. [umap-project/umap](https://github.com/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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
