更新记录
1.00.00(2026-09-11) 下载此版本
全新第一版
平台兼容性
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| √ | √ | √ |
gibbs-map
地图坐标转换工具集,支持 WGS-84、GCJ-02、BD-09 三种坐标系互转,适用于 uni-app 全平台
概述
国内地图坐标系存在三种标准:
- WGS-84:GPS 原始坐标,国际标准坐标系
- GCJ-02:国测局坐标(俗称"火星坐标"),高德地图、腾讯地图、Google 中国地图使用
- BD-09:百度坐标,百度地图专用,在 GCJ-02 基础上二次加密
不同地图 SDK 和 API 对坐标系要求不同,混用会导致 数百米的位置偏移。本工具提供三种坐标系之间的完整互转能力。
坐标系关系
WGS-84 ←→ GCJ-02 ←→ BD-09
(GPS) (高德/腾讯) (百度)
功能概要
- [x] WGS-84 ↔ GCJ-02 互转
- [x] GCJ-02 ↔ BD-09 互转
- [x] WGS-84 ↔ BD-09 互转(组合转换)
- [x] 中国境外坐标自动跳过偏移(境外无加密)
- [x] 纯 JS 实现,无第三方依赖,支持 uni-app 全平台
安装
将 gibbs-map 目录放入项目的 uni_modules 目录下即可。
代码演示
导入
import coordTransform from '@/uni_modules/gibbs-map/js/coordinate-transform.js'
WGS-84 → GCJ-02
最常用场景:后端存储的是 GPS 坐标,前端需要传给
uni.openLocation或高德地图 SDK
var gcj02 = coordTransform.wgs84ToGcj02(116.397428, 39.90923)
console.log(gcj02.lng) // 116.40389...
console.log(gcj02.lat) // 39.91512...
GCJ-02 → WGS-84
场景:从高德/腾讯地图获取的坐标,需要转为 GPS 原始坐标
var wgs84 = coordTransform.gcj02ToWgs84(116.40389, 39.91512)
console.log(wgs84.lng) // 116.39742...
console.log(wgs84.lat) // 39.90923...
GCJ-02 → BD-09
场景:从高德地图获取的坐标,需要传给百度地图 SDK
var bd09 = coordTransform.gcj02ToBd09(116.40389, 39.91512)
console.log(bd09.lng) // 116.41037...
console.log(bd09.lat) // 39.92112...
BD-09 → GCJ-02
场景:从百度地图获取的坐标,需要传给高德/腾讯地图
var gcj02 = coordTransform.bd09ToGcj02(116.41037, 39.92112)
console.log(gcj02.lng) // 116.40389...
console.log(gcj02.lat) // 39.91512...
WGS-84 → BD-09
场景:GPS 坐标直接转百度坐标
var bd09 = coordTransform.wgs84ToBd09(116.397428, 39.90923)
BD-09 → WGS-84
场景:百度坐标直接转 GPS 坐标
var wgs84 = coordTransform.bd09ToWgs84(116.41037, 39.92112)
API
方法列表
| 方法名 | 说明 | 参数 | 返回值 |
|---|---|---|---|
wgs84ToGcj02(lng, lat) |
WGS-84 转 GCJ-02 | lng: 经度, lat: 纬度 |
{ lng, lat } |
gcj02ToWgs84(lng, lat) |
GCJ-02 转 WGS-84 | lng: 经度, lat: 纬度 |
{ lng, lat } |
gcj02ToBd09(lng, lat) |
GCJ-02 转 BD-09 | lng: 经度, lat: 纬度 |
{ lng, lat } |
bd09ToGcj02(lng, lat) |
BD-09 转 GCJ-02 | lng: 经度, lat: 纬度 |
{ lng, lat } |
wgs84ToBd09(lng, lat) |
WGS-84 转 BD-09 | lng: 经度, lat: 纬度 |
{ lng, lat } |
bd09ToWgs84(lng, lat) |
BD-09 转 WGS-84 | lng: 经度, lat: 纬度 |
{ lng, lat } |
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lng | Number |
是 | 经度,范围 -180 ~ 180 |
| lat | Number |
是 | 纬度,范围 -90 ~ 90 |
返回值
{
lng: Number, // 转换后的经度
lat: Number // 转换后的纬度
}
常见场景对照表
| 场景 | 需要的坐标系 | 转换方法 |
|---|---|---|
uni.openLocation 打开内置地图 |
GCJ-02 | wgs84ToGcj02 |
| 高德地图 JS SDK | GCJ-02 | wgs84ToGcj02 |
| 腾讯地图 JS SDK | GCJ-02 | wgs84ToGcj02 |
| 百度地图 JS SDK | BD-09 | wgs84ToBd09 |
| Google 地图(国际版) | WGS-84 | 不需要转换 |
| OpenStreetMap / Leaflet | WGS-84 | 不需要转换 |
| 天地图 | WGS-84 | 不需要转换 |
| 后端距离计算(GPS 基准) | WGS-84 | gcj02ToWgs84 |
注意事项
- 参数顺序统一为
(经度 lng, 纬度 lat),与高德/腾讯地图 API 的(lng, lat)顺序一致,注意百度地图部分 API 是(lat, lng)顺序 - 中国境外坐标不受偏移影响,方法会直接返回原坐标
- GCJ-02 → WGS-84 为逆向近似推算,精度误差约在 1~2 米以内,满足绝大多数业务场景
- BD-09 ↔ GCJ-02 的转换为精确数学运算,无精度损失
文件结构
uni_modules/gibbs-map/
├── js/
│ └── coordinate-transform.js # 坐标转换核心方法
├── package.json
└── readme.md

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 0
赞赏 0
下载 12589921
赞赏 1949
赞赏
京公网安备:11010802035340号