做过地图相关开发的同学肯定会遇到这样一个问题:同样的经纬度坐标,在百度地图和高德地图上位置不一样。

关于坐标系

我们通常用经纬度来表示一个地理位置,但是由于一些原因,我们从不同渠道得到的经纬度信息可能并不是在同一个坐标系下。

  • 高德地图、腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系
  • 百度地图使用的是BD-09坐标系
  • 底层接口(HTML5 Geolocation或ios、安卓API)通过GPS设备获取的坐标使用的是WGS-84坐标系

不同的坐标系之间可能有几十到几百米的偏移,所以在开发基于地图的产品,或者做地理数据可视化时,我们需要修正不同坐标系之间的偏差。

WGS-84 - 世界大地测量系统

WGS-84(World Geodetic System, WGS)是使用最广泛的坐标系,也是世界通用的坐标系,GPS设备得到的经纬度就是在WGS84坐标系下的经纬度。通常通过底层接口得到的定位信息都是WGS84坐标系。

GCJ-02 - 国测局坐标

GCJ-02(G-Guojia国家,C-Cehui测绘,J-Ju局),又被称为火星坐标系,是一种基于WGS-84制定的大地测量系统,由中国国测局制定。此坐标系所采用的混淆算法会在经纬度中加入随机的偏移。

国家规定,中国大陆所有公开地理数据都需要至少用GCJ-02进行加密,也就是说我们从国内公司的产品中得到的数据,一定是经过了加密的。绝大部分国内互联网地图提供商都是使用GCJ-02坐标系,包括高德地图,谷歌地图中国区等。

导航电子地图在公开出版、销售、传播、展示和使用前,必须进行空间位置技术处理。— GB 20263―2006《导航电子地图安全处理技术基本要求》,4.1

BD-09 - 百度坐标系

BD-09(Baidu, BD)是百度地图使用的地理坐标系,其在GCJ-02上多增加了一次变换,用来保护用户隐私。从百度产品中得到的坐标都是BD-09坐标系。

解决方案

百度地图以及高德地图都提供了一些方法来转换不同坐标系下的坐标,但是它们都需要进行网络请求,性能很差。
在春节假期时,我做了一个库gcoord来做这些事。

gcoord

gcoord主要解决了两个问题
* 能将坐标在不同坐标系下相互转换
* 能够处理GeoJSON

GeoJSON是地理行业一种通用的数据格式,它本质上就是JSON,不过对字段有一些约定。

gcoord使用起来非常简单
例如从手机的GPS得到一个经纬度坐标,需要将其展示在百度地图上,则可以通过gcoord将当前坐标从WGS-84坐标系转换为BD-09坐标系

var result = gcoord.transform([ 116.403988, 39.914266 ],    // 经纬度坐标gcoord.WGS84,                 // 当前坐标系gcoord.BD09                   // 目标坐标系
);
console.log( result );  // [ 116.41661560068297, 39.92196580126834 ]

详细的使用方式请查看gcoord的文档

欢迎大家star

gcoord: 转换WGS84、GCJ02、BD09坐标,解决百度地图高德地图坐标系不统一的问题相关推荐

  1. Python3 Wgs84\gcj02\bd09\mercator\bd09mc坐标系转换与投影

    最基础的一组经纬度坐标转换,在网上找到过JavaScript和java版本的,但是没有找到python版本的,把JavaScript版本的改成了python版本的,能凑合用. "" ...

  2. android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换

    android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换 前言: 由于项目需要,很多时候都需要地图经纬度直接的转换 ...

  3. Cesium加载无偏移百度、高德地图

    前言 使用cesium加载地图服务时,cesium默认的地理坐标系是WGS84坐标,一般添加天地图的地图服务时不会发生地图偏移的情况(其实也有,但是可以忽略不计),直接加载就可以,但在添加百度.高德地 ...

  4. 如何用GGGIS地图下载器下载谷歌无偏移影像和天地图标注(百度和高德地图类似)

    如何用GGGIS地图下载器下载谷歌无偏移影像和天地图标注(百度和高德地图类似) 软件:GGGIS地图下载器 第一步:选择登录注册 第二步骤:注册一个自己专属的账号 第三步:登录即可(第一次登录会比较慢 ...

  5. ios html调起高德地图,iOS 调用百度地图, 高德地图,苹果自带的地图

    在你项目的info.plist添加 LSApplicationQueriesSchemes 为KEY 类型为NSArray;添加对应的白名单 高德:iosamap百度:baidumap - (void ...

  6. android 高德地图 sh1,百度、高德地图获取发布版(Release)SHA1

    一.简介: 在百度.高德地图开发中,申请key的时候,要两个版本的sha1值.一个是开发版(debug),一个是发布版(release). debug版本的sha1比较好获取,网上资料一堆,这里引用一 ...

  7. gcoord: 转换WGS84、GCJ02、BD09坐标,转换百度高德地图坐标系

    做过地图相关开发的同学肯定会遇到这样一个问题:同样的经纬度坐标,在百度地图和高德地图上位置不一样. 关于坐标系 我们通常用经纬度来表示一个地理位置,但是由于一些原因,我们从不同渠道得到的经纬度信息可能 ...

  8. wgs-84,gcj-02,bd-09的相互转换,高德,世界测量,百度坐标系的相互转换,坐标系转换

    高德使用的是gcj-02坐标系,百度使用的是bd09坐标系,注意其间的相互转换 1.首先创建一个GPS对象类 public class Gps {private double wgLat;privat ...

  9. WGS84(GPS坐标) BD09坐标(百度坐标)GCJ02(国测局坐标) 的相互转换

    关于三种坐标系的介绍 WGS84:一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系. GCJ02:由中国国家测绘局制订的地理信息系统的坐标系统,是由WGS84坐标系经过加密后的坐标 ...

最新文章

  1. MySQL半同步安装以及参数
  2. Python之装饰器
  3. 粒子物理学有了新的基础数学理论
  4. JVM - 基本类型的包装类和对象池
  5. 把普通的git库变成bare库
  6. Windows下 更改 pip默认缓存目录
  7. 开课吧 Python专家级编程:机制与实操
  8. mysql的学习要点_MySQL中的联合索引的学习要点总结
  9. 商业认知,新的一年开始了
  10. 更新浏览器CSS样式表
  11. 各种语音编码方法,所需要的带宽
  12. 更改远程桌面默认端口3389及删除远程桌面连接历史记录
  13. 小米3 android4.4,小米3移动版原厂刷机包4.4.4rom线刷包Root权限驱动
  14. 晶振 负载电容 匹配电容
  15. html制作晚安,晚安计划.html
  16. 用PowerPoint(PPT)快速制作炫酷数字倒计时
  17. 头歌 共享单车大数据项目数据分析
  18. 关系模式设计的问题 函数依赖
  19. 倪光南院士:构建安全可控的信息技术体系,云宏高安全的云计算关键核心技术先行
  20. Matlab绘制多组柱状图的方法(可直接复制)

热门文章

  1. 安卓虚拟机_虚拟机上面的安卓操作系统!基于Android7.1的凤凰OS X86系统
  2. 品牌“潮”营销​:Z世代成为消费新主力,我国潮牌营销洞察报告​
  3. 3533dd找不到服务器,DDraceNetwork新手常见问题汇总
  4. 2017-08-03 面试记录(铃声多多)
  5. unity3D-learnin:Priests and Devils
  6. 基于强化学习的坦克大战python语言实现
  7. linux中文麻酱字_买芝麻酱时,包装上只有这2个字,都是好芝麻酱
  8. 第 09 章:虎行有雨,定义标记类型Aware接口,实现感知容器对象
  9. Python + selenium 安装问题,pip install selenium失败及解决方法
  10. 虚幻引擎开发多人游戏联机