本专栏专注 Android 移动端测绘、地图定位、GIS 开发与实战落地,覆盖 GPS/北斗定位、轨迹采集、坐标转换、离线地图、测绘数据采集、地图图层开发、定位纠偏与性能优化等核心场景。
本文是专栏总索引,把 20 篇文章按学习路径重新组织,每一篇都可点击直达。
一、先看这张路线图
如果你不想按顺序硬啃,可以按自己的阶段直接跳:
| 你的现状 | 建议从哪开始 |
|---|---|
| 没接触过 Android 地图开发 | 直接看 [第一阶段](#你的现状 建议从哪开始 没接触过 Android 地图开发 直接看 第一阶段,4 篇打底 项目要接离线地图 跳到 第二阶段,离线方案选型 + 底图接入 被坐标偏移、纠偏搞晕 看 第三阶段,坐标系统三篇 要叠加自己的业务图层 看 第四阶段,图层与数据模型 要加比例尺、罗盘、手势 看 第五阶段 点上万了就卡 直接看 第六阶段,性能攻坚 想做工程化底图架构 看 第七阶段),4 篇打底 |
| 项目要接离线地图 | 跳到 [第二阶段](#你的现状 建议从哪开始 没接触过 Android 地图开发 直接看 第一阶段,4 篇打底 项目要接离线地图 跳到 第二阶段,离线方案选型 + 底图接入 被坐标偏移、纠偏搞晕 看 第三阶段,坐标系统三篇 要叠加自己的业务图层 看 第四阶段,图层与数据模型 要加比例尺、罗盘、手势 看 第五阶段 点上万了就卡 直接看 第六阶段,性能攻坚 想做工程化底图架构 看 第七阶段),离线方案选型 + 底图接入 |
| 被坐标偏移、纠偏搞晕 | 看 [第三阶段](#你的现状 建议从哪开始 没接触过 Android 地图开发 直接看 第一阶段,4 篇打底 项目要接离线地图 跳到 第二阶段,离线方案选型 + 底图接入 被坐标偏移、纠偏搞晕 看 第三阶段,坐标系统三篇 要叠加自己的业务图层 看 第四阶段,图层与数据模型 要加比例尺、罗盘、手势 看 第五阶段 点上万了就卡 直接看 第六阶段,性能攻坚 想做工程化底图架构 看 第七阶段),坐标系统三篇 |
| 要叠加自己的业务图层 | 看 [第四阶段](#你的现状 建议从哪开始 没接触过 Android 地图开发 直接看 第一阶段,4 篇打底 项目要接离线地图 跳到 第二阶段,离线方案选型 + 底图接入 被坐标偏移、纠偏搞晕 看 第三阶段,坐标系统三篇 要叠加自己的业务图层 看 第四阶段,图层与数据模型 要加比例尺、罗盘、手势 看 第五阶段 点上万了就卡 直接看 第六阶段,性能攻坚 想做工程化底图架构 看 第七阶段),图层与数据模型 |
| 要加比例尺、罗盘、手势 | 看 [第五阶段](#你的现状 建议从哪开始 没接触过 Android 地图开发 直接看 第一阶段,4 篇打底 项目要接离线地图 跳到 第二阶段,离线方案选型 + 底图接入 被坐标偏移、纠偏搞晕 看 第三阶段,坐标系统三篇 要叠加自己的业务图层 看 第四阶段,图层与数据模型 要加比例尺、罗盘、手势 看 第五阶段 点上万了就卡 直接看 第六阶段,性能攻坚 想做工程化底图架构 看 第七阶段) |
| 点上万了就卡 | 直接看 [第六阶段](#你的现状 建议从哪开始 没接触过 Android 地图开发 直接看 第一阶段,4 篇打底 项目要接离线地图 跳到 第二阶段,离线方案选型 + 底图接入 被坐标偏移、纠偏搞晕 看 第三阶段,坐标系统三篇 要叠加自己的业务图层 看 第四阶段,图层与数据模型 要加比例尺、罗盘、手势 看 第五阶段 点上万了就卡 直接看 第六阶段,性能攻坚 想做工程化底图架构 看 第七阶段),性能攻坚 |
| 想做工程化底图架构 | 看 [第七阶段](#你的现状 建议从哪开始 没接触过 Android 地图开发 直接看 第一阶段,4 篇打底 项目要接离线地图 跳到 第二阶段,离线方案选型 + 底图接入 被坐标偏移、纠偏搞晕 看 第三阶段,坐标系统三篇 要叠加自己的业务图层 看 第四阶段,图层与数据模型 要加比例尺、罗盘、手势 看 第五阶段 点上万了就卡 直接看 第六阶段,性能攻坚 想做工程化底图架构 看 第七阶段) |
二、第一阶段:入门奠基(2 篇)
先把环境跑起来,再搞懂 MapView 的生命周期------这两篇不过关,后面所有功能都会踩坑。
-
Android osmdroid 地图开发入门:环境搭建与 Hello World(附完整源码)
从零搭起 osmdroid 工程,跑通第一个地图页面。
-
osmdroid 自定义地图视图:继承 MapView 的正确姿势与生命周期管理
讲清楚自定义 MapView 时哪些方法必须复写、生命周期怎么挂,避免常见的闪退与资源泄漏。
三、第二阶段:底图接入与离线方案(4 篇)
做测绘应用,底图来源和离线能力往往决定整个项目的可行性。
-
osmdroid 接入谷歌影像底图:瓦片 URL 拼接与多域名轮询实战
瓦片 URL 怎么拼、多域名轮询怎么轮,解决请求被限流的问题。
-
天地图接入 osmdroid:影像/矢量/注记四类服务与级别限制详解
国内合规底图方案,讲清四类服务的区别和级别限制这个大坑。
-
osmdroid 离线地图三种方案选型:矢量包/瓦片归档/影像贴图
三条技术路线的对比选型,含各自适用场景与代价。
-
MapLibre 离线地图三路线:矢量现算/影像贴图/瓦片归档对比
同一问题在 MapLibre 上的对照实现,可与第 5 篇对比着看。
四、第三阶段:坐标系统与纠偏(3 篇)
这一阶段是整个测绘开发最容易翻车的地方------坐标差之毫厘,实地谬以千里。
-
osmdroid 坐标纠偏原理与实战:WGS-84 与 GCJ-02 双向换算
讲透 WGS-84 与 GCJ-02 的换算原理与实现。
-
MapLibre 坐标纠偏:GCJ-02 原理与"转两次"陷阱(附源码)
重点在"转两次"这个隐蔽陷阱------很多偏移问题都是重复纠偏造成的。
-
osmdroid 屏幕坐标与测量坐标互转:中心点+比例尺仿射换算
屏幕像素 ↔ 实地坐标的仿射换算,做点选、量测、放样的基础。
五、第四阶段:图层与数据模型(3 篇)
底图有了,怎么把业务数据(点、线、面、SHP、CAD)叠上去并保持可维护?
-
osmdroid 图层系统设计:一个模型扛住 8 种数据 + XML 持久化
用统一数据模型收编多种图层类型,并做 XML 持久化。
-
osmdroid 矢量数据上地图:SHP/CAD/点库的解析与渲染分离
解析层与渲染层分离的设计思路,避免数据格式一变就全改。
-
MapLibre 统一图层模型:sealed class + 声明式图层 + XML 持久化
Kotlin
sealed class实现声明式图层,与第 10 篇是同一问题的两种解法。
六、第五阶段:交互、控件与边界(4 篇)
让地图"好用"的部分:覆盖物叠放、手势、罗盘、比例尺,以及极值缩放的边界护栏。
-
osmdroid Overlay 体系详解:比例尺/罗盘/总绘图层有序叠放
Overlay 的叠放顺序与各自职责,解决"控件互相盖住"的问题。
-
osmdroid 手势交互与罗盘方向:缩放联动+传感器融合+定位跟随
手势与传感器融合,实现跟随定位与方向联动。
-
MapLibre 自定义比例尺:Web 墨卡托屏幕距离换算公式与实现
从 Web 墨卡托投影公式推出比例尺,含完整实现。
-
osmdroid 放大到厘米级:极值缩放边界护栏与比例尺自定义换算
测绘场景需要放到厘米级,讲极值缩放的边界护栏怎么做。
七、第六阶段:性能攻坚------海量点渲染(2 篇)
点数上万就开始卡,是测绘 App 最常见的性能瓶颈。这两篇是专栏的硬核部分。
-
三级过滤管线的完整设计:范围裁剪 → 抽稀 → 渲染。
-
MapLibre 海量点渲染优化:三级过滤管线(范围裁剪+像素叠加)
MapLibre 上的对应实现,与第 17 篇对照阅读效果最好。
八、第七阶段:工程化与底图架构(2 篇)
-
把瓦片源管理做成工厂,统一处理多域名、压级别、注记叠加。
-
MapLibre 范围缩放:由地面分辨率反推缩放级别(公式+代码)
由地面分辨率反推缩放级别,解决"缩放到指定区域"的精度问题。
九、两条主线:osmdroid 与 MapLibre 怎么选?
专栏同时覆盖两套引擎,不是重复,而是同一问题的两种解法对照:
| 对比维度 | osmdroid | MapLibre |
|---|---|---|
| 定位 | 成熟稳定,View 体系,上手快 | 现代矢量引擎,样式表达强 |
| 适合场景 | 传统测绘采集、点位标注、离线瓦片 | 矢量样式定制、大数据量渲染 |
| 专栏篇数 | 12 篇 | 8 篇 |
建议:新手从 osmdroid 主线入手(生态成熟、坑少);需要复杂矢量样式或极致渲染性能时,再看 MapLibre 主线。
十、推荐阅读顺序
如果你想系统学一遍,按这个顺序走:
入门奠基(1-2)
↓
底图接入与离线(3-6)
↓
坐标系统与纠偏(7-9) ← 关键,别跳过
↓
图层与数据模型(10-12)
↓
交互控件与边界(13-16)
↓
性能攻坚(17-18)
↓
工程化架构(19-20)
如果时间紧,优先看这 5 篇 :坐标纠偏(7)、屏幕与测量坐标互转(9)、图层系统设计(10)、数万点渲染(17)、离线方案选型(5)。
写在最后
这个专栏的 20 篇文章,基本覆盖了 Android 测绘地图开发从"跑起来"到"扛住生产环境"的完整链路。每篇都配了可运行的源码,建议边看边跑。
如果某一篇讲得不够透,或者有你遇到的坑没覆盖到,欢迎在对应文章下留言,我会持续补充。
📌 专栏名 :Android 测绘开发实战
📌 适合人群:Android 开发者 / GIS 移动端工程师 / 测绘行业研发人员