地图开发基础概念——地图服务类型、坐标系与 SDK 简介
学习目标
在编写代码之前,先理解地图的本质至关重要。否则,一个简单的标记点都可能因为坐标系问题出现偏差。
- 理解地图服务的基本类型及其应用场景
- 掌握 WGS84、GCJ-02、BD09 三大坐标系的区别与转换原理
- 熟悉主流地图 SDK 的核心功能与适用场景
- 构建对地图开发的整体认知框架
引言:地图不是纸,是数据!
很多人误以为地图仅是静态图片,其实现代前端地图开发本质上是对空间数据的可视化与交互处理。它融合了地理信息系统(GIS)、计算机图形学、前端工程化等多个领域的知识。
有人可能会问,为什么地图开发感觉这么复杂?其实是因为它不仅要求前端技能,还需要一定的地理空间知识。不过别担心,我们一步步拆解就能明白。
一、地图服务类型详解
1.1 矢量地图(Vector Map)
矢量地图由数学公式定义的几何对象(点、线、面)组成,具有以下特点:
| 特性 | 描述 |
|---|---|
| 可缩放性 | 无限放大不失真 |
| 数据体积小 | 相比位图更轻量 |
| 样式可定制 | 可动态修改颜色、字体等 |
| 渲染性能高 | GPU 加速友好 |
典型代表包括 Google Maps(新版)、Mapbox GL JS。
1.2 卫星图(Satellite Map)
卫星图是通过遥感技术拍摄的真实地表图像:
- 优点:真实还原地貌细节(山川、建筑)
- 缺点:数据体积大、加载慢、无法交互修改样式
典型代表:Google Earth、高德卫星图层。
1.3 地形图(Terrain Map)
地形图强调海拔高度和坡度变化,常用于户外导航、地质勘探:
- 关键技术:数字高程模型(DEM)
- 视觉表现:等高线 + 伪三维渲染
典型代表:Mapbox Terrain、百度地形图。
二、坐标系统大乱斗:WGS84 vs GCJ-02 vs BD09
为什么我在高德上标注的位置,在百度地图上偏了 500 米?这通常是坐标系惹的祸。
2.1 WGS84:国际通用标准
- 全称:World Geodetic System 1984
- 应用范围:GPS 设备、国际航空航海
- 特点:全球统一基准,精度最高
以下是经纬度转笛卡尔坐标(ECEF)的简化算法示例:
// WGS84 经纬度转笛卡尔坐标(ECEF)
function wgs84ToEcef(lat, lon, alt = 0) {
const a = 6378137; // 长半轴
b = ;
e2 = (a * a - b * b) / (a * a);
N = a / .( - e2 * .(lat) ** );
{
: (N + alt) * .(lat) * .(lon),
: (N + alt) * .(lat) * .(lon),
: ((b * b) / (a * a) * N + alt) * .(lat)
};
}


