您的位置:首页 > 其它

欢迎使用CSDN-markdown编辑器

2015-10-11 10:51 369 查看
最近在做百度地图开发的小软件,实现从当前位置到搜索位置的导航,遇到了一个问题,就是坐标的转化,通过查看大家的帖子和SDK,我最终把这个问题解决啦。

在这里我写详细一点吧,方便大家查看,首先定位的坐标格式选用option.setCoorType(“gcj02”);即国标,在得到定位坐标后要在地图上显示那么得用百度地图的坐标即bd09ll所以需要转化,

CoordinateConverter converter = new CoordinateConverter();

converter.from(CoordType.COMMON);

converter.coord(latLng);

LatLng desLatLng = converter.convert();

把得到的latlng转化成需要的百度坐标 deslatlng,这样定位的坐标显示就没有问题啦。

有些可能需要Poi搜索,那搜索得到的坐标是百度坐标,那导航的时候一般是从自己的位置到搜索的位置,我导航选用的是国标GCJ02,所以要把百度坐标转化为国标,最后我发现LocationClient.getBDLocationInCoorType(BDLocation src, java.lang.String transferType ).getLatitude()函数可以实现(这个在定位SDK是LocatClientl类的成员函数,可能有些帖子说的有点问题),那需要把你得到的坐标构造成一个BDlocation对象,所以用

BDLocation bdLocation=new BDLocation();

bdLocation.setLongitude(lng.longitude);

bdLocation.setLatitude(lng.latitude); lng是LatLng对象,那么到现在,你可以用

double lax = LocationClient.getBDLocationInCoorType(bdLocation, BDLocation.BDLOCATION_BD09LL_TO_GCJ02).getLatitude();

double lox=LocationClient.getBDLocationInCoorType(bdLocation, BDLocation.BDLOCATION_BD09LL_TO_GCJ02). getLongitude();

得到你需要的国标格式的经纬度啦。

网上的帖子还有几篇,写的都挺好的,但是有点不太详细,基本上解决了定位、搜索和导航中坐标转换的问题,我用的是导航SDK v2.0.0, 定位SDK v6.1.2 ,可能有些地方还是不太恰当,希望对大家有所帮助
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: