百度导航坐标转换问题

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

需知:
(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的坐标了。然后就可以愉快的导航了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值