百度地图开发坐标问题总结

PC端使用了百度地图搜索位置并显示在地图上 最后获取位置的经纬度坐标
移动端分别使用了百度地图获取实时经纬度 获取文字地址 定位在地图上
其中发现不少问题 及时总结下git

坐标系种类和使用现状

当前国内地图参考系分三种:github

  1. WGS84坐标系
    直接从GPS获取器中取出的原始数据 国际地图供应商使用的坐标系数据库

  2. GCJ-02火星坐标系(国测局坐标系)
    中国标准 国行GPS产品获取到的数据使用的坐标 国家规定: 国内出版的各类地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。浏览器

  3. BD-09百度坐标系
    百度标准,百度 SDK,百度地图,Geocoding 使用 原本就乱了,百度又在火星坐标上来个二次加密微信

三种参考系的使用状况:工具

  1. 国外如google地图 H5浏览器使用的都是WGS参考系google

  2. 国内的大多数如 腾讯地图 高德地图 iOS地图(高德地图) 均是使用的火星坐标系加密

  3. 百度获取地理位置的方法 获得的坐标是百度坐标 (百度是基于浏览器获取地理位置方法进行了封装)spa

三种坐标系转换状况:3d

  1. 高德地图提供了WGS转火星坐标的方法

  2. 百度地图提供了WGS转百度地图的方法

  3. 微信获取地理位置默认WGS 可选择为火星坐标

三种坐标系的数据相对于真实位置对比

真实位置:北京市朝阳区洛娃大厦C座 116.475176 40.018079

地图上显示位置:

1.WGS

clipboard.png

以上是WGS真实坐标应该在百度地图上显示的位置

2.火星坐标

若是认为上述坐标为火星坐标时候 将其显示在百度地图上 位置则会发生偏移

clipboard.png

3.百度坐标

若是又将上诉坐标认为是百度坐标时 将其显示在百度地图上 位置则有发生偏移

clipboard.png

可见加密过的坐标 均相对于真实坐标向西南角偏移 直线距离大概一千米

因此 当经过某种获取地理位的方式获取到坐标 而不知道其实什么坐标系的时候
可用上诉方法找个真实坐标对比 快速断定其坐标系
用图表示

clipboard.png

能够看到 三种坐标系转换的方法 是不全面的
高德和百度只提供转到其本身坐标系的转换方法 不支持转出其余坐标系的方法

如今项目遇到的状况
数据库保存的是在PC端设置的 WGS坐标
移动端获取的百度坐标系
二者之间进行距离计算 须要转换

明白了各类获取位置是什么坐标系的
再明白了各类坐标系之间的转换就容易多了

坐标系转换方法

这里安利github上一我的作的转换方法(star 565)
里面能够实现各类坐标的来回转换 极大地方便了开发使用
wandergis/coordtransform

另外能够查看各个坐标相对于真实位置的地图位置工具
在线经纬度查询

大概就是这样

相关文章
相关标签/搜索