<!-- title: 摆脱地图霸权的7个开源神器 -->

# 本期主题：把“地理位置”从巨头手里拿回来——7个开源地图与位置生态宝藏

## 概述

连续几期我们避开了一个看似“已被 Google 垄定”的领域：地图与位置服务。但 2025 年 Google Timeline 改版导致大量用户位置历史丢失（据多家媒体报道），反而成了开源地理生态的引爆点——离线地图、自托管位置记录、自建路径规划、单文件瓦片分发，每一环都有成熟项目顶上。本期 7 个仓库横跨 C++ 引擎、Rails 全栈、Android 应用和文件格式标准，既有 Star 上万的老牌劲旅，也有去年才几百 Star、如今被视为“Google 时间线最佳平替”的小而美新作。地理数据是少数巨头撤离反而留下巨大空白的领域，商业二次开发空间极宽。

---

## 1. Organic Maps | Star 约 10k | 活跃维护中

**[organicmaps/organicmaps](https://github.com/organicmaps/organicmaps)**

一句话定位：完全离线、零广告零追踪的开源地图 App，MAPS.ME 的开源续命之作。

它解决的痛点：野外没信号、出境不想被追踪、受够了地图 App 里的广告和信息流——Organic Maps 把全部地图数据（基于 OpenStreetMap）打包进本地文件，搜索、导航、收藏全部离线完成。

核心拆解：项目 2021 年从闭源的 MAPS.ME 分叉开源，C++ 核心引擎 + Kotlin（Android）/ Swift（iOS）双端。架构上最有意思的是它的 MWM 地图分块格式——按区域下载、按需更新，徒步路线、等高线、滑雪道图层都能单独叠加。导航支持驾车/步行/骑行三种模式，且完全在本地计算路径。对开发者而言，它的 C++ 核心可以作为库嵌入，这是做离线导览产品的现成底座。

上手难度：⭐（装了就用）

适用人群：户外爱好者、经常出境的用户、隐私敏感人群。二次开发方向：景区/博物馆/越野赛事的白标离线导览 App——离线导览是付费意愿极清晰的场景，而 Organic Maps 提供了几乎全部技术底座。

---

## 2. Dawarich | Star 约 3k+（一年内从几百暴涨） | 活跃维护中

**[Freika/dawarich](https://github.com/Freika/dawarich)**

一句话定位：自托管的 Google Timeline 替代品，你的位置历史从此只存在自己家里。

它解决的痛点：Google 2024 年宣布 Timeline 只存本地后，2025 年中大量用户报告历史记录被清空且无法找回（据多家媒体报道）。位置轨迹是十年级别的记忆数据，交给任何云厂商都有归零风险。

核心拆解：Ruby on Rails + React + Sidekiq 的经典全栈组合，Docker Compose 一键起服务。数据入口非常开放：支持 Google Takeout 的 records.json 导入（把你在 Google 积累的历年时间线整体搬回家）、OwnTracks、Overland、PhoneTrack、Home Assistant，还配了官方手机 App 做定位上报。前端是一个可回放任意日期的时间轴地图，自动统计你到过的国家、城市、总里程——半年前去过哪个小镇，搜一下就出来。

上手难度：⭐⭐⭐（需要一台 NAS/VPS 和基本的 Docker 操作）

适用人群：自托管玩家、有长期位置数据焦虑的人、家庭“共同记忆”记录者。商业方向：面向家庭的位置共享托管服务、小型车队/外勤团队的位置留痕 SaaS——目标用户和付费场景都已被 Google Timeline 教育成熟。

---

## 3. StreetComplete | Star 约 4k | 活跃维护中（按“任务季”持续迭代）

**[streetcomplete/StreetComplete](https://github.com/streetcomplete/StreetComplete)**

一句话定位：把“给世界地图打工”变成闯关游戏的 Android 应用。

它解决的痛点：OpenStreetMap 数据永远缺细节——这家店几点开门？这条路是不是柏油的？这个自行车道有没有？但传统编辑器（iD、JOSM）学习成本高，把 99% 想贡献的普通人挡在门外。

核心拆解：打开 App，地图上会浮现一个个可回答的“任务”图标（Quest）：点开一个店铺图标，回答营业时间；点开一段路，选路面材质。你的每次回答自动转成结构化的 OSM 数据变更并提交。Kotlin 编写，任务系统是插件化设计——官方按季度发布“任务季”主题（比如某季专攻人行道无障碍信息），社区贡献新 Quest 类型的门槛很低。这是“让非技术人员批量生产高质量地理数据”的教科书级交互设计。

上手难度：⭐（散步时顺手玩）

适用人群：想为开源做贡献但没有编程背景的人、骑行/徒步深度用户。商业思路：市政设施数据采集——城市若有“摸清全市无障碍设施”这类需求，基于 Quest 机制做定向众包采集，成本远低于人工测绘。

---

## 4. Valhalla | Star 约 4k | 活跃维护中

**[valhalla/valhalla](https://github.com/valhalla/valhalla)**

一句话定位：开源路径规划引擎中的“动态成本”流派代表，自建版 Google Directions。

它解决的痛点：物流、外卖、出行类产品调用 Google Directions API 是按次付费的持续失血；而开源阵营里 OSRM 快但路径成本策略在预处理时就写死了，想按请求灵活调整（比如“这次绕开高速”）很别扭。

核心拆解：C++ 编写，源自 Mapzen，现由 Valhalla 组织维护。最大亮点是分层瓦片式路网：全球路网切成多级瓦片，请求时只加载相关区域，内存占用友好。更关键的是“动态 costing”——车辆、货车、自行车、行人等出行方式的成本函数在请求时才应用，可以按请求排除高速、避开台阶、按坡度优化骑行路线（它内置高程数据感知）。除最短路径外还提供 isochrones（等时圈：“从这里 30 分钟能到哪”）、matrix（多点对多点的距离矩阵，配送调度的基础件）。官方 Docker 镜像 + 切瓦片脚本，拿一份 OSM 区域数据就能起自己的路由 API。

上手难度：⭐⭐⭐⭐（要理解瓦片构建和 costing 参数）

适用人群：出行/物流/户外类产品的后端工程师。商业方向：为区域性客户（城际货运、景区接驳、共享单车）自托管路径规划，把按次计费的 API 成本变成一次性基础设施投入——客户规模越大，省得越狠。

---

## 5. Photon | Star 约 4k+ | 活跃维护中

**[komoot/photon](https://github.com/komoot/photon)**

一句话定位：容错能力极强的开源地理编码器，自建版 Google Places 搜索框。

它解决的痛点：地图产品里“输入几个字 → 模糊匹配到地点”这个搜索框，看着简单，背后是地理编码这门硬学问。Nominatim 准确但笨重难伺候，Google Places 又贵又限流。

核心拆解：Java 编写，是户外社区 Komoot 为自家搜索框打造的方案，索引基于 Lucene 构建。它吃 OpenStreetMap 全球数据，提供正向（关键词→坐标）和反向（坐标→地址）两套 API，天然支持多语言地名、错别字容忍（打错字也能出结果）、按用户当前位置偏置排序。部署极其简单：官方提供预构建的全球索引文件，下载后 `java -jar` 一行命令起服务，也有轻量的区域索引可选。很多自托管地图方案（比如配合 Dawarich、Immich 类项目的地图组件）都用它做地点联想。

上手难度：⭐⭐（下载索引 + 一条启动命令）

适用人群：需要地点搜索能力的全栈开发者、私有化部署的信息系统。商业方向：给政企内网/离线环境做地址补全组件——这类客户不能调外网 API，又愿意为“开箱可用的搜索框”付费。

---

## 6. MapLibre GL JS | Star 约 6k+ | 非常活跃

**[maplibre/maplibre-gl-js](https://github.com/maplibre/maplibre-gl-js)**

一句话定位：Mapbox GL JS 的开源分叉，如今事实上的开放矢量地图渲染标准。

它解决的痛点：2020 年底 Mapbox 修改 SDK 许可证并调整定价，大量成本敏感的用户被架上砧板。社区当机立断 fork 了最后的开源版本 v1.13，五年间把“怕 Mapbox 涨价”升级成了“根本不需要 Mapbox”。

核心拆解：WebGL 渲染的矢量瓦片地图库，完整兼容 Mapbox Style Spec，你现有的样式文件几乎无缝迁移。围绕它已长成一整个家族：MapLibre Native 覆盖 iOS/Android，React 生态有成熟封装，Leaflet/OpenLayers/QGIS 均有对接。它是“地图界摆脱单一大厂依赖”最成功的案例——政府、金融、交通行业的私有化地图项目大量采用，兼容旧 Mapbox 代码这一点让迁移成本极低。配上下一节的 PMTiles，前端渲染 + 数据托管可以做到全程零第三方依赖。

上手难度：⭐⭐⭐（需要前端开发基础）

适用人群：所有要做数据可视化和地图展示的前端/全栈开发者。商业方向：帮企业从 Mapbox 迁移省年费——这是个已经真实存在的咨询/外包市场，技术方案就是 MapLibre 家族全家桶。

---

## 7. PMTiles | Star 约 2-3k（千级成长中） | 活跃维护中

**[protomaps/PMTiles](https://github.com/protomaps/PMTiles)**

一句话定位：把整个地图瓦片库塞进一个文件，用纯静态存储干掉瓦片服务器。

它解决的痛点：传统地图托管需要 MBTiles + 瓦片服务器（或无数小文件）+ CDN，运维重、成本高；全球级别的瓦片动辄几十 TB 的请求费用。

核心拆解：PMTiles 是一个云优化的单文件归档格式——所有瓦片按空间索引（Hilbert 曲线排序）打包进一个文件，前端通过 HTTP Range Request 按字节区间随机读取，不需要任何服务端逻辑。也就是说：一个 PMTiles 文件扔到 S3、Cloudflare R2（无出口流量费）甚至 GitHub Pages，配上 MapLibre 就是全球可用的地图服务。配套的 protomaps 主仓库提供每日全球底图构建和切图工具链，Leaflet、MapLibre、OpenLayers、QGIS 都有官方适配。据项目方介绍，这种架构能把地图托管成本压缩一到两个数量级。

上手难度：⭐⭐（会 CLI 就行）

适用人群：被瓦片服务器折磨的 GIS 工程师、想给静态博客加地图的人。商业方向：帮地理信息公司“上云降本”——把客户的私有瓦片数据转成 PMTiles 架构，交付方案干净、省钱效果可量化，是最容易讲清楚价值主张的一单。

---

## 8. OpenTracks | Star 约 2k | 活跃维护中

**[OpenTracksApp/OpenTracks](https://github.com/OpenTracksApp/OpenTracks)**

一句话定位：一个网络权限都不需要的 Android 运动轨迹记录器。

它解决的痛点：Strava、Keep 等运动 App 把你跑步的每一条轨迹、心率、作息上传变现，且免费版功能逐年缩水。对轨迹数据敏感的跑者和骑行者需要“记录这一功能”本身，而非一个社交平台。

核心拆解：纯离线设计——App 声明的权限里根本没有互联网访问，记录的 GPS 轨迹、配速、海拔全部只存本地；通过蓝牙连接心率带等传感器做训练监控，支持语音播报配速；配套的 Dashboard 应用提供本地统计分析。代码结构干净，是 F-Droid 上的常青项目。小团队、低依赖、目标极窄，属于典型的“单一痛点做到极致”的小而美样本，也非常适合作为定制化运动 App 的起点。

上手难度：⭐

适用人群：隐私敏感的运动人群、离线场景（山区、边境、船上）记录者。商业思路：为垂直运动场景（越野赛、滑雪场、马术）定制轨迹记录与安全监控 App，OpenTracks 可作核心底座。

---

## 本期横向对比

| 仓库 | 类型 | Star（约） | 上手难度 | 一句话场景 |
|------|------|-----------|---------|-----------|
| Organic Maps | 离线地图 App | 10k+ | ⭐ | 无网也能导航的全能地图 |
| Dawarich | 自托管位置历史 | 3k+ | ⭐⭐⭐ | Google Timeline 平替 |
| StreetComplete | OSM 众包编辑 | 4k | ⭐ | 散步顺手改进世界地图 |
| Valhalla | 路径规划引擎 | 4k | ⭐⭐⭐⭐ | 自建物流/出行路由 API |
| Photon | 地理编码器 | 4k+ | ⭐⭐ | 容错地点搜索框 |
| MapLibre GL JS | 前端地图渲染库 | 6k+ | ⭐⭐⭐ | 零依赖摆脱 Mapbox |
| PMTiles | 瓦片文件格式 | 2-3k | ⭐⭐ | 单文件 + 静态托管地图 |
| OpenTracks | 运动轨迹记录 | 2k | ⭐ | 完全离线的运动记录 |

## 可视化定位

```mermaid
quadrantChart
    title 本期开源地理生态定位图
    x-axis "低上手门槛" --> "高上手门槛"
    y-axis "个人日用工具" --> "商业/基建价值"
    quadrant-1 "深耕变现区"
    quadrant-2 "亲民基建区"
    quadrant-3 "尝鲜实验区"
    quadrant-4 "大众日用区"
    "Organic Maps": [0.12, 0.40]
    "Dawarich": [0.42, 0.52]
    "StreetComplete": [0.10, 0.30]
    "Valhalla": [0.75, 0.88]
    "Photon": [0.28, 0.68]
    "MapLibre GL JS": [0.55, 0.78]
    "PMTiles": [0.35, 0.82]
    "OpenTracks": [0.08, 0.22]
```

## 本期之最

- **最值得立即尝试：Dawarich** —— 如果你曾在 Google 积累过位置历史，趁数据还在，Takeout 导出后导入 Dawarich，一次操作赎回十年记忆。
- **最有商业潜力：Valhalla + PMTiles 组合** —— 自建路由 + 零服务器瓦片托管，是区域物流和出行创业公司替代 Google Maps API 全家桶的完整开源答案，省下的 API 费用就是你的报价空间。
- **最被低估：PMTiles** —— Star 数在本期垫底，但它重新定义了“地图数据的分发方式”，格式层面已被主流地图库官方接纳，是典型的“规范级”项目，早期理解它的人正在吃红利。

## 参考来源

1. [Organic Maps - GitHub](https://github.com/organicmaps/organicmaps) — 离线地图应用官方仓库
2. [Dawarich - GitHub](https://github.com/Freika/dawarich) — 自托管位置历史项目仓库及文档
3. [Valhalla - GitHub](https://github.com/valhalla/valhalla) — 开源路由引擎官方仓库
4. [Photon - GitHub](https://github.com/komoot/photon) — Komoot 开源地理编码器
5. [MapLibre GL JS - GitHub](https://github.com/maplibre/maplibre-gl-js) / [maplibre.org](https://maplibre.org) — 开源矢量地图渲染库及官方文档
6. [PMTiles - GitHub](https://github.com/protomaps/PMTiles) / [protomaps.com](https://protomaps.com) — 单文件瓦片格式规范与工具链
7. [StreetComplete - GitHub](https://github.com/streetcomplete/StreetComplete) — OSM 众包任务式编辑器
8. [OpenTracks - GitHub](https://github.com/OpenTracksApp/OpenTracks) — 离线运动轨迹记录器

> 注：文中 Star 数为写作时约数，请以各仓库页面实时数据为准；Google Timeline 数据丢失事件为公开报道，具体影响范围以官方说明为准。

> [!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)
