安卓百度地圖(五)百度地圖路線規(guī)劃

其他文章:
安卓百度離線地圖的下載以及使用
安卓百度地圖(一)定位功能的實現(xiàn)、周邊POI的檢索
安卓百度地圖(二)地圖顯示以及離線地圖的下載使用
安卓百度地圖(三)繪制點泉沾、線等圖層信息
安卓百度地圖(四)城市捞蚂,周邊姓迅,區(qū)域檢索
安卓百度地圖(六)鷹眼軌跡的上傳,歷史軌跡的顯示
安卓百度地圖(七)地理圍欄的建立與使用

本文就百度地圖的路線規(guī)劃功能加以收集整理

一 路線規(guī)劃簡介

百度地圖路線規(guī)劃分為步行線規(guī)劃肩杈,行車路線規(guī)劃解寝,騎行路線規(guī)劃聋伦,公交路線規(guī)劃

二 路線規(guī)劃

2.1. 創(chuàng)建線路規(guī)劃檢索實例

mSearch = RoutePlanSearch.newInstance();

2.2 設(shè)置線路規(guī)劃檢索監(jiān)聽者

mSearch.setOnGetRoutePlanResultListener(listener);

2.3 設(shè)置線路規(guī)劃起點、終點信息

傳入地名

PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "西二旗地鐵站");  
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "百度科技園");

傳入坐標(biāo)

PlanNode stNode = PlanNode.withLocation(loc_start);
PlanNode enNode = PlanNode.withLocation(loc_end);

2.4 發(fā)起線路規(guī)劃

2.4.1 發(fā)起步行線路規(guī)劃

mSearch.walkingSearch((new WalkingRoutePlanOption())  
    .from(stNode)  
    .to(enNode));

2.4.2 騎行路線規(guī)劃

通過設(shè)置騎行類型ridingType()即可實現(xiàn)電動車和普通自行車切換兵拢,默認為0普通騎行模式逾礁,舊版用戶使用普通自行車模式不受影響。 電動車騎行路線規(guī)劃腻扇,規(guī)避電動車禁行路段,避免罰款阳柔。 電動車騎行路線規(guī)劃傾向于走大路舌剂,方便尋路暑椰,適于快速通行。

//通過設(shè)ridingType避消,可以區(qū)分普通自行車召夹,和電動車線路
ridingType(int ridingType) 
mSearch.bikingSearch((new BikingRoutePlanOption())  
    .from(stNode)  
    .to(enNode));

2.4.3 駕車線路規(guī)劃

mSearch.drivingSearch((new DrivingRoutePlanOption())  
    .from(stNode)  
    .to(enNode));

2.4.4 公交線路規(guī)劃

mSearch.transitSearch(
   new TransitRoutePlanOption()
  .from(stNode)
  .to(enNode));

關(guān)于成成公交监憎、換乘等問題,請查看官網(wǎng)解析

2.5 設(shè)置線路規(guī)劃檢索監(jiān)聽者偷霉;

 OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {
        //獲取步行線路規(guī)劃結(jié)果
        @Override
        public void onGetWalkingRouteResult(WalkingRouteResult result) {
        }
       //獲取綜合公共交通線路規(guī)劃結(jié)果
        @Override
        public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {
        }
        //獲取**跨城**綜合公共交通線路規(guī)劃結(jié)果
        @Override
        public void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) {
        }
        //獲取駕車線路規(guī)劃結(jié)果  
        @Override
        public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
        }
        //室內(nèi)路線規(guī)劃結(jié)果
        @Override
        public void onGetIndoorRouteResult(IndoorRouteResult indoorRouteResult) {
        }
        //獲取普通騎行路規(guī)劃結(jié)果  
        @Override
        public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {
        }
    };

6 顯示線路

先下載官方提供的工具類mapapi,將內(nèi)部的overlayutil包直接放入自己的java代碼中

示例駕車路線規(guī)劃示例
//繪制路線

if (drivingRouteResult == null || drivingRouteResult.error !=   SearchResult.ERRORNO.NO_ERROR) {
        Toast.makeText(MapRoadActivity.this, "抱歉渔扎,未找到結(jié)果", Toast.LENGTH_SHORT).show();
}
if (drivingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
       // 起終點或途經(jīng)點地址有岐義,通過以下接口獲取建議查詢信息
       drivingRouteResult.getSuggestAddrInfo();
        return;
}
if (drivingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {
      if (drivingRouteResult.getRouteLines().size() >= 1) {
            MyDrivingRouteOverlay overlay = new MyDrivingRouteOverlay(mBaiduMap);
            mBaiduMap.setOnMarkerClickListener(overlay);
            overlay.setData(drivingRouteResult.getRouteLines().get(0));
            overlay.addToMap();
            overlay.zoomToSpan();
        } else {
             Log.d("route result", "結(jié)果數(shù)<0");
             return;
        }
}

// 定制RouteOverly,自定義起點終點圖片

boolean useDefaultIcon = false;//使用默認ICON
private class MyDrivingRouteOverlay extends DrivingRouteOverlay {
   public MyDrivingRouteOverlay(BaiduMap baiduMap) {
      super(baiduMap);
   }
   @Override
   public BitmapDescriptor getStartMarker() {
      if (useDefaultIcon) {
          return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);
      }
          return null;
      }
      @Override
      public BitmapDescriptor getTerminalMarker() {
         if (useDefaultIcon) {
             return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);
         }
             return null;
      }
}

7.釋放檢索實例;

mSearch.destory();
注意:具體錯誤碼世剖,請查看百度地圖錯誤碼

本文主要做于收集整理筆記使用旁瘫,關(guān)于文章的源碼,請移步我的GitHub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惠况,一起剝皮案震驚了整個濱河市稠屠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌权埠,老刑警劉巖攘蔽,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呐粘,死亡現(xiàn)場離奇詭異,居然都是意外死亡唆垃,警方通過查閱死者的電腦和手機辕万,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓄坏,“玉大人丑念,你說我怎么就攤上這事脯倚∏妒海” “怎么了宝惰?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵尊残,是天一觀的道長炒瘸。 經(jīng)常有香客問我顷扩,道長慰毅,這世上最難降的妖魔是什么隘截? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮汹胃,結(jié)果婚禮上婶芭,老公的妹妹穿的比我還像新娘。我一直安慰自己着饥,他們只是感情好雕擂,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贱勃,像睡著了一般井赌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贵扰,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天仇穗,我揣著相機與錄音,去河邊找鬼戚绕。 笑死纹坐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谷誓,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼糙臼,長吁一口氣:“原來是場噩夢啊……” “哼变逃!你這毒婦竟也來了末患?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绘证,失蹤者是張志新(化名)和其女友劉穎胞枕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體派桩,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡员魏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年闻书,在試婚紗的時候發(fā)現(xiàn)自己被綠了砰盐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囊骤。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浪蹂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缰猴,我是刑警寧澤隘膘,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布误续,位于F島的核電站育瓜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏焰手。R本人自食惡果不足惜躬拢,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抵窒,春花似錦、人聲如沸宙枷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽板辽。三九已至巧鸭,卻和暖如春郑叠,著一層夾襖步出監(jiān)牢的瞬間沸版,已是汗流浹背蕾殴。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工批幌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親典徊。 傳聞我的和親對象是個殘疾皇子也切,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359