Android百度地圖SDK 導航SDK2.0結合定位SDK6.0.5的導航參數設定方法

來源:互聯網
上載者:User

標籤:百度地圖sdk   android   導航參數設定   

    前段時間做了一陣百度地圖的內容,還未來的及總結,很快有些問題及解決辦法都忘了,現在記錄下之前比較糾結的問題,分享如下  

  如題,現在的導航SDK2.0的導航發起函數如下

        public boolean launchNavigator(Activity activity,                               java.util.List<BNRoutePlanNode> nodes,                               int preference,                               boolean isGPSNav,                               BaiduNaviManager.RoutePlanListener listener)

文檔給出的參數釋義如下:

參數:
activity - 建議是應用的主Activity
nodes - 傳入的算路節點,順序是起點、途經點、終點,其中途經點最多三個,參考 BNRoutePlanNode
preference - 算路偏好,參考RoutePlanPreference定義
isGPSNav - true表示真實GPS導航,false表示類比導航
listener - 開始導航回調監聽器,在該監聽器裡一般是進入導航過程頁面
返回:
是否執行成功 其中對於算路的節點,現在有了一個新的規則,可見BNRoutePlanNode

取文檔的釋義如下:

public BNRoutePlanNode(double longitude,                       double latitude,                       java.lang.String name,                       java.lang.String description,                       BNRoutePlanNode.CoordinateType coType)
算路節點構造方法.
參數:
longitude - 經度
latitude - 緯度
name - 算路節點名
description - 算路節點地址描述
coType - 座標類型,參考 CoordinateType
可見現在對於算路節點的座標類型有了一個標準,也即

BD09_MC百度墨卡托座標
GCJ02國測局座標
WGS84GPS座標
 座標類型必須為以上三種,否則如果不指定或者預設匹配不到這三種座標類型則都會導致算路失敗。


但是百度定位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<BNRoutePlanNode> nodeList = new ArrayList<BNRoutePlanNode>(2);nodeList.add(startNode);nodeList.add(endNode);BaiduNaviManager.getInstance().launchNavigator(mActivity, nodeList, calcMode, true,new MapRoutePlanListener(startNode));}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Android百度地圖SDK 導航SDK2.0結合定位SDK6.0.5的導航參數設定方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.