更新记录

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

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。