关于百度坐标转火星坐标的问题

本文介绍了在项目中遇到的百度地图坐标与手机自带地图坐标不一致的问题,并分享了一种通过手动调整经纬度来减小坐标偏移量的方法。此外,还提供了两种在线坐标转换资源供参考。

因为项目需求,要在应用内部调用百度地图API进行路线规划,之后再调用手机自带的地图进行导航,但是将从百度地图获取到的经纬度传过去之后就出现了坐标偏移现象,然后一直在网上查询如何把百度地图的坐标转换成火星坐标,看到比较靠谱的就是

http://blog.youkuaiyun.com/xiaobaismiley/article/details/3757630 这篇文章,
还有一种我觉得也比较靠谱的是百度文库中的
http://wenku.baidu.com/link?url=4TQ-ExLBlfo63SNMQMnd_D2FXLGuZcHJXyEJ4n8HdwnOjDrE6cCSxQrh8iVueANZ5supfp6coXGX2EKMOXjtW-CVxB56gTN-NtSgMpvlGuO
我没有试过这种方法,因为我觉得为了一个偏移量还要下那么大的数据库划不来,但是感兴趣的盆友可以试一下。
第一种方法比较容易,但是这样做出来之后和百度API中的

BDLocation bdLocation = new BDLocation();
        bdLocation.setLatitude(endLng.latitude);
        bdLocation.setLongitude(endLng.longitude);
        BDLocation location = mLocClient.getBDLocationInCoorType(bdLocation,BDLocation.BDLOCATION_BD09LL_TO_GCJ02);

这样的实现方法得出的坐标是差不多的,偏移量比较大,所以我想了一个比较笨的办法,自己亲自测试的,这些方法中偏移量最小的方法,就是花了一个下午的时间,根据自己所剩无几的地理知识硬生生的把偏移量给调出来了,其实特别简单的,就是在得到的经纬度上做个加减,虽然不是100%准确 ,但是还是可以解决燃眉之急。 好了,废话不多说了,直接上代码:

BDLocation bdLocation = new BDLocation();
    bdLocation.setLatitude(endLng.latitude);
    bdLocation.setLongitude(endLng.longitude);
    BDLocation location = mLocClient.getBDLocationInCoorType(bdLocation, BDLocation.BDLOCATION_BD09LL_TO_GCJ02);
    StringBuffer sb = new StringBuffer();
    sb.append("geo:").append(location.getLatitude() + 0.003).append(",")
        .append(location.getLongitude() - 0.0011).append("?").append("q=").append(address);
    Uri mUri = Uri.parse(sb.toString());
    Intent mIntent = new Intent(Intent.ACTION_VIEW, mUri);
    try {
            startActivity(mIntent);
    } catch (ActivityNotFoundException e) {
            showToast(getString(R.string.no_map_application));
    }

用百度地图、高德地图和腾讯地图(用这种方法调腾讯地图好像只认传过去的地址,和坐标好像没什么关系)测试了几个坐标,偏移很小,虽然比较笨,但是暂时性的解决了项目中的问题,希望日后有大神能帮忙彻底的解决下这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值