这几天由于项目需要,在编写一个地图上的导航功能;
我将百度上的sdk以及demo下载下来传入【百度定位】 的 坐标以及目的地的坐标,但是开启导航后位置却向西北方向偏了几百米;
经过我对百度定位sdk api 以及百度导航sdk api的查看,感觉应该是坐标类型不一样;
百度定位的默认坐标类弄是gcj02 ,而百度导航的默认坐标类型是GCJ
感觉只要导航的时候把坐标类型修改为GCJ02就行了,当然在定位的时候也可以设置为其它的坐标类型,那么就需要在导航的时候设置成同样的坐标类型;
private void launchNavigator2( GeoPoint startPt, GeoPoint endPt, String address )
{
// 这里给出一个起终点示例,实际应用中可以通过POI检索、外部POI来源等方式获取起终点坐标
BNaviPoint startPoint = new BNaviPoint( startPt.getLongitudeE6() / ( 1.0 * 1e6 ),
startPt.getLatitudeE6() / ( 1.0 * 1e6 ), "我的位置", BNaviPoint.CoordinateType.BD09_MC );
BNaviPoint endPoint = new BNaviPoint( endPt.getLongitudeE6() / ( 1.0 * 1e6 ),
endPt.getLatitudeE6() / ( 1.0 * 1e6 ), address, BNaviPoint.CoordinateType.BD09_MC );
BaiduNaviManager.getInstance().launchNavigator( this, startPoint, // 起点(可指定坐标系)
endPoint, // 终点(可指定坐标系)
NE_RoutePlan_Mode.ROUTE_PLAN_MOD_MIN_TIME, // 算路方式
true, // 真实导航
BaiduNaviManager.STRATEGY_FORCE_ONLINE_PRIORITY, // 在离线策略
new OnStartNavigationListener()
{ // 跳转监听
@Override
public void onJumpToNavigator( Bundle configParams )
{
Intent intent = new Intent( HistoryActivity.this, BNavigatorActivity.class );
intent.putExtras( configParams );
startActivity( intent );
}
@Override
public void onJumpToDownloader()
{
}
} );
}