image.png
通过以上两张图片我们发现,同一个经纬度在高德地图和百度地图上显示的位置是不一样的,百度地图的标点在高德地图标点的左下方大约1km处。
先介绍几个坐标标准:
- WGS-84(大地坐标系)——国际经纬度坐标标准;
- GCJ-02(火星坐标系)——国内要求使用的国测局制定的坐标标准,并且要求,任何地图产品至少要使用该坐标标准对原始坐标进行首次加密,高德地图、腾讯地图都是使用的这个坐标系;
- BD-09——百度地图在GCJ-02的基础上进行了二次加密。
由于高德地图和百度地图使用的不是同一个加密方式,所以同一个坐标点显示的位置是不同的。
解决方法是调用百度地图的坐标转换接口进行转换,把非百度坐标转成百度坐标。单位请求可批量解析100个坐标。(官网链接:http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition)
接口:http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924&from=1&to=5&ak=你的密钥 //GET请求
image.png
image.png
日常生活中使用导航的时候没有感觉到,是因为除了对手机地图加偏外,用户的定位也被加偏处理后再显示在地图上,相关坐标都被同一算法给加偏后,两者完全匹配, GPS 也就可以正常工作。