安卓百度地图(五)百度地图路线规划

其他文章:
安卓百度离线地图的下载以及使用
安卓百度地图(一)定位功能的实现、周边POI的检索
安卓百度地图(二)地图显示以及离线地图的下载使用
安卓百度地图(三)绘制点、线等图层信息
安卓百度地图(四)城市,周边,区域检索
安卓百度地图(六)鹰眼轨迹的上传,历史轨迹的显示
安卓百度地图(七)地理围栏的建立与使用

本文就百度地图的路线规划功能加以收集整理

一 路线规划简介

百度地图路线规划分为步行线规划,行车路线规划,骑行路线规划,公交路线规划

二 路线规划

2.1. 创建线路规划检索实例

mSearch = RoutePlanSearch.newInstance();

2.2 设置线路规划检索监听者

mSearch.setOnGetRoutePlanResultListener(listener);

2.3 设置线路规划起点、终点信息

传入地名

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

传入坐标

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

2.4 发起线路规划

2.4.1 发起步行线路规划

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

2.4.2 骑行路线规划

通过设置骑行类型ridingType()即可实现电动车和普通自行车切换,默认为0普通骑行模式,旧版用户使用普通自行车模式不受影响。 电动车骑行路线规划,规避电动车禁行路段,避免罚款。 电动车骑行路线规划倾向于走大路,方便寻路,适于快速通行。

//通过设ridingType,可以区分普通自行车,和电动车线路
ridingType(int ridingType) 
mSearch.bikingSearch((new BikingRoutePlanOption())  
    .from(stNode)  
    .to(enNode));

2.4.3 驾车线路规划

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

2.4.4 公交线路规划

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

关于成成公交、换乘等问题,请查看官网解析

2.5 设置线路规划检索监听者;

 OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {
        //获取步行线路规划结果
        @Override
        public void onGetWalkingRouteResult(WalkingRouteResult result) {
        }
       //获取综合公共交通线路规划结果
        @Override
        public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {
        }
        //获取**跨城**综合公共交通线路规划结果
        @Override
        public void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) {
        }
        //获取驾车线路规划结果  
        @Override
        public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
        }
        //室内路线规划结果
        @Override
        public void onGetIndoorRouteResult(IndoorRouteResult indoorRouteResult) {
        }
        //获取普通骑行路规划结果  
        @Override
        public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {
        }
    };

6 显示线路

先下载官方提供的工具类mapapi,将内部的overlayutil包直接放入自己的java代码中

示例驾车路线规划示例
//绘制路线

if (drivingRouteResult == null || drivingRouteResult.error !=   SearchResult.ERRORNO.NO_ERROR) {
        Toast.makeText(MapRoadActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
}
if (drivingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
       // 起终点或途经点地址有岐义,通过以下接口获取建议查询信息
       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", "结果数<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();
注意:具体错误码,请查看百度地图错误码

本文主要做于收集整理笔记使用,关于文章的源码,请移步我的GitHub

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354