百度导航坐标转换问题

来源:互联网 发布:淘宝客设置流程 卖家 编辑:程序博客网 时间:2024/06/01 19:01

备忘一下使用百度地图与百度导航中遇到的一些问题,已经解决方法,方便日后查询。

需知:
(1)、Android定位SDK中使用的坐标体系:
gcj02表示定位成功后返回国测局经纬度坐标系坐标
bd09表示定位成功后返回百度墨卡托坐标系坐标
bd09ll表示定位成功后返回百度经纬度坐标系坐标

其中bd09ll的坐标可以无偏差的显示在百度地图中(应该是百度地图默认也是使用这个坐标系),所以在定位中选取bd09ll,定位成功后就可以返回对应的坐标了。

(2)、Android导航SDK中使用的坐标体系:

BD09_MC表示算路节点中使用百度墨卡托坐标
GCJ02表示算路节点中使用国测局坐标
WGS84表示算路节点中使用GPS坐标

在2015年的时候,需要用到百度的导航功能,发现了百度定位与百度导航使用的是不同的坐标体系,所以导航的精准度惨不忍睹。但是当时又没有找到方法进行坐标转换,就搁置了这个功能。今天终于在BBS看到一个帖子百度开放平台-百度导航坐标转换问题。参考这个帖子,终于把问题解决了。

思路:

(1)在开始导航之前,将坐标转换成GCJ02坐标再进行导航。
(2)Android定位SDK类参考中的LocationClient类中有一个方法:

 getBDLocationInCoorType(BDLocation src, java.lang.String transferType) 参数:      BDLocation -src 原始BDLocation;      String - transferType 转换类型,取值范围为:[      BDLocation.BDLOCATION_BD09_TO_GCJ02,      BDLocation.BDLOCATION_BD09LL_TO_GCJ02,      BDLocation.BDLOCATION_GCJ02_TO_BD09,      BDLocation.BDLOCATION_GCJ02_TO_BD09LL      ]

好了,我们现在只需要把bd09ll坐标转成GCJ02即可。参考代码如下:

LocationClient.getBDLocationInCoorType(bdLocation, BDLocation.BDLOCATION_BD09LL_TO_GCJ02);/* bdLocation为定位时获取到的bd09ll坐标*/

然后在初始化的时候就可以bdLocation.getLongitude()这样子获取GCJ02的坐标了。然后就可以愉快的导航了。

0 0
原创粉丝点击