Android开发中,偶然发现,用百度地图分享出来的经纬度信息,再次用高德地图、腾讯地图打开,会出现几百米甚至几公里的偏移。借用网络相关评论 分享出来的明明是山,换个地图打开变成海了

一、现象

打开百度地图:在地图上选择一个地点,查看其经纬度坐标。
这里以我的老东家 网易北京研发中心为例。
打开百度地图坐标拾取系统,搜索框输入 网易北京研发中心,获取经纬度坐标为:116.282314,40.049229

分享的山 换个地图打开成了海-LMLPHP

打开高德地图,高德地图逆地理编码系统。
百度地图坐标拾取的经纬度信息填入高德地图逆地理编码系统中,如下图所示,可以看到定位地址大约出现了一公里的偏移

分享的山 换个地图打开成了海-LMLPHP

打开腾讯地图,腾讯位置服务系统。
百度地图坐标拾取的经纬度信息填入腾讯位置服务系统中,如下图所示,可以看到定位地址同样出现了大约一公里的偏移,但腾讯地图、高德地图最终的定位位置保持一致

分享的山 换个地图打开成了海-LMLPHP

高德地图坐标拾取器
https://lbs.amap.com/demo/javascript-api/example/geocoder/regeocoding

百度地图坐标拾取器
http://api.map.baidu.com/lbsapi/getpoint/index.html

腾讯地图坐标拾取器
https://lbs.qq.com/getPoint/

猜想:

现象:
百度地图分享出来的经纬度信息,用高德地图、腾讯地图打开出现了相同的偏移量;但高德地图、腾讯地图分享出来的经纬度信息,两者之前可以互相使用。

这里猜测:
高德、腾讯地图应该使用了同一套坐标系统;百度地图可能在该地图的基础上,使用了一套新的坐标系统,对坐标系主动进行了某种偏移操作。

二、坐标系

分别查询高德地图、腾讯地图、百度地图三家的开发者平台,发现:
高德地图、腾讯地图采用的是 GCJ02 坐标系百度地图采用了 BD09 坐标系

那么 GCJ02、BD09 坐标系有什么区别?

想要了解 GCJ02、BD09 坐标系的区别,先了解一下国内主流的坐标系类型。
目前国内主流的坐标系类型有 WGS84、GCJ02、BD09

  • WGS84
    世界大地测量系统(World Geodetic System 1984)是一种用于地图学、大地测量学和导航(GPS全球定位系统)的大地测量系统标准。
  • GCJ02
    中国国家测量局02号标准(Guojia Cehui Ju 02),也称为火星坐标系。是中国国家测绘局制订的地理信息系统的坐标系统,是在 WGS84 经纬度的基础上执行加密算法而成。因GPS得到的经纬度直接在 GCJ02 坐标系下会定位到错误的地点,有种到了火星的感觉,因此在坊间也将 GCJ02 戏称为火星坐标系
  • BD09
    百度坐标系,百度在GCJ02坐标系基础上再次加密而成

国内主流地图默认采用的坐标系?

了解了各坐标系的大概定义,那么目前国内主流的地图都默认采用了什么坐标系统呢?

总结一句话:

中国大陆、港澳,使用GCJ02坐标系(百度除外,百度默认使用 BD09 坐标系);中国台湾省使用 WGS84 坐标系;海外地区使用 BD09 坐标系

以上表格数据依据:

百度地图数据依据
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/coordtrans

分享的山 换个地图打开成了海-LMLPHP

高德地图数据依据
https://lbs.amap.com/faq/advisory/others/39840/?wd=WGS84&cateId=&page=&detail=true

分享的山 换个地图打开成了海-LMLPHP

分享的山 换个地图打开成了海-LMLPHP

腾讯地图数据依据
https://lbs.qq.com/mobile/androidMapSDK/developerGuide/attention

分享的山 换个地图打开成了海-LMLPHP

分享的山 换个地图打开成了海-LMLPHP

三、坐标系转换

查看百度、高德、腾讯相关开发者平台,发现对应开发者平台均提供了GCJ02、BD09、WGS84相关的坐标系转化API。

百度地图

百度地图 坐标转化API:
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/coordtrans

分享的山 换个地图打开成了海-LMLPHP

高德地图

高德地图 坐标转化API:
https://lbs.amap.com/api/android-sdk/guide/computing-equipment/coordinate-transformation/

分享的山 换个地图打开成了海-LMLPHP

=== THE END ===

分享的山 换个地图打开成了海-LMLPHP

04-02 23:29