android6.0 百度地图,Android百度地图SDK 导航SDK2.0结合定位SDK6.0.5的导航参数设置方法...
是否執行成功?其中對于算路的節點,現在有了一個新的規則,可見BNRoutePlanNode
取文檔的釋義如下:
public?BNRoutePlanNode(double?longitude,
double?latitude,
java.lang.String?name,
java.lang.String?description,
BNRoutePlanNode.CoordinateType?coType)
算路節點構造方法.
參數:longitude?- 經度latitude?- 緯度name?- 算路節點名description?- 算路節點地址描述coType?- 坐標類型,參考?CoordinateType
可見現在對于算路節點的坐標類型有了一個標準,也即
百度墨卡托坐標
國測局坐標
GPS坐標
坐標類型必須為以上三種,否則如果不指定或者默認匹配不到這三種坐標類型則都會導致算路失敗。
但是百度定位SDK的坐標系一般用的是bd09ll類型,這時候就需要用到類型轉換,在5.3版本之前可以有另一種方法來轉換的,但是5.3版本就取消了,于是6.0.5之后就有了這個函數來做轉換,如下
public static BDLocation getBDLocationInCoorType(BDLocation src,
java.lang.String transferType)
根據設定的轉換坐標系類型得到相應坐標系下的BDLocation
參數:
BDLocation - src 原始BDLocation
transferType - BDLocation.BDLOCATION_GCJ02_TO_BD09/BDLOCATION_GCJ02_TO_BD09LL/BDLOCATION_BD09_TO_GCJ02/ BDLOCATION_BD09LL_TO_GCJ02
用這個就可以直接將百度定位和地圖獲取的BDLocation轉換成可以直接使用的導航參數。
以此希望可以幫到尚不明白如何轉換的同學!
部分代碼如下:
// 發起算路
private void startCalcRoute(int calcMode) {
// 顯示加載對話框
DialogUtil.getInstance().showProgressDialog(mActivity);
if (mBdLocation == null) {
Toast.makeText(this, getString(R.string.map_location_failed), Toast.LENGTH_LONG).show();
// 取消加載對話框
DialogUtil.getInstance().dismissProgressDialog();
return;
}
if (calcMode == 0)
calcMode = BaiduNaviManager.RoutePlanPreference.ROUTE_PLAN_MOD_AVOID_TAFFICJAM;
double sX = 0, sY = 0, eX = 0, eY = 0;
sX = LocationClient.getBDLocationInCoorType(mBdLocation, BDLocation.BDLOCATION_BD09LL_TO_GCJ02).getLatitude();
sY = LocationClient.getBDLocationInCoorType(mBdLocation, BDLocation.BDLOCATION_BD09LL_TO_GCJ02).getLongitude();
BNRoutePlanNode startNode = new BNRoutePlanNode(sY, sX, "我的位置", "我的位置");BDLocation bd = new BDLocation();
bd.setLatitude(destLat);
bd.setLongitude(destLng);
eX = LocationClient.getBDLocationInCoorType(bd, BDLocation.BDLOCATION_BD09LL_TO_GCJ02).getLatitude();
eY = LocationClient.getBDLocationInCoorType(bd, BDLocation.BDLOCATION_BD09LL_TO_GCJ02).getLongitude();
BNRoutePlanNode endNode = new BNRoutePlanNode(eY, eX, strDestAddress, strDestAddress);
ArrayList nodeList = new ArrayList(2);
nodeList.add(startNode);
nodeList.add(endNode);
BaiduNaviManager.getInstance().launchNavigator(mActivity, nodeList, calcMode, true,
new MapRoutePlanListener(startNode));
}
總結
以上是生活随笔為你收集整理的android6.0 百度地图,Android百度地图SDK 导航SDK2.0结合定位SDK6.0.5的导航参数设置方法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android442电视怎么投屏,哔哩哔
- 下一篇: android 检测当前wifi是否又网