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

其他文章:
安卓百度离线地图的下载以及使用
安卓百度地图(一)定位功能的实现、周边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

你可能感兴趣的:(安卓百度地图(五)百度地图路线规划)