1.  设置路线规划监听

 mSearch.setOnGetRoutePlanResultListener(getRoutePlanListener);//设置路线规划监听

2.初始化路线监听器

 /*路线规划监听器*/private OnGetRoutePlanResultListener getRoutePlanListener = new OnGetRoutePlanResultListener() {@Overridepublic void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {}@Overridepublic void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {}@Overridepublic void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) {}public void onGetDrivingRouteResult(DrivingRouteResult result) {//获取驾车线路规划结果DialogUtil.closeDialog();if (result.error == SearchResult.ERRORNO.NO_ERROR) {// mroute = result.getRouteLines().get(0);             baiduMap.clear();DrivingRouteOverlay overlay = new MyDrivingRouteOverlay(baiduMap);overlay.setData(result.getRouteLines().get(0));overlay.addToMap();overlay.zoomToSpan();} else {DialogUtil.showShortToast(ChooseGasStationActivity.this, "请输入正确的地址!");}}@Overridepublic void onGetIndoorRouteResult(IndoorRouteResult indoorRouteResult) {}@Overridepublic void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {}};

3.DrivingRouteOverlay是百度demo中的一个类,找到后放到 项目中,可以继承这个类,也可以直接在此类中修改代码。

public class DrivingRouteOverlay extends OverlayManager {private DrivingRouteLine mRouteLine = null;boolean focus = false;/*** 构造函数* * @param baiduMap*            该DrivingRouteOvelray引用的 BaiduMap*/public DrivingRouteOverlay(BaiduMap baiduMap) {super(baiduMap);}@Overridepublic final List<OverlayOptions> getOverlayOptions() {if (mRouteLine == null) {return null;}List<OverlayOptions> overlayOptionses = new ArrayList<OverlayOptions>();// step nodeif (mRouteLine.getAllStep() != null&& mRouteLine.getAllStep().size() > 0) {for (DrivingStep step : mRouteLine.getAllStep()) {Bundle b = new Bundle();b.putInt("index", mRouteLine.getAllStep().indexOf(step));if (step.getEntrance() != null) {overlayOptionses.add((new MarkerOptions()).position(step.getEntrance().getLocation()).anchor(0.5f, 0.5f).zIndex(10).rotate((360 - step.getDirection())).extraInfo(b).icon(BitmapDescriptorFactory.fromAssetWithDpi("Icon_line_node.png")));}// 最后路段绘制出口点if (mRouteLine.getAllStep().indexOf(step) == (mRouteLine.getAllStep().size() - 1) && step.getExit() != null) {overlayOptionses.add((new MarkerOptions()).position(step.getExit().getLocation()).anchor(0.5f, 0.5f).zIndex(10).icon(BitmapDescriptorFactory.fromAssetWithDpi("Icon_line_node.png")));}}}if (mRouteLine.getStarting() != null) {overlayOptionses.add((new MarkerOptions()).position(mRouteLine.getStarting().getLocation()).icon(getStartMarker() != null ? getStartMarker() :BitmapDescriptorFactory.fromAssetWithDpi("Icon_start.png")).zIndex(10));}if (mRouteLine.getTerminal() != null) {overlayOptionses.add((new MarkerOptions()).position(mRouteLine.getTerminal().getLocation()).icon(getTerminalMarker() != null ? getTerminalMarker() :BitmapDescriptorFactory.fromAssetWithDpi("Icon_end.png")).zIndex(10));}// poly lineif (mRouteLine.getAllStep() != null&& mRouteLine.getAllStep().size() > 0) {List<DrivingStep> steps = mRouteLine.getAllStep();int stepNum = steps.size();List<LatLng> points = new ArrayList<LatLng>();ArrayList<Integer> traffics = new ArrayList<Integer>();int totalTraffic = 0;for (int i = 0; i < stepNum ; i++) {if (i == stepNum - 1) {points.addAll(steps.get(i).getWayPoints());} else {points.addAll(steps.get(i).getWayPoints().subList(0, steps.get(i).getWayPoints().size() - 1));}totalTraffic += steps.get(i).getWayPoints().size() - 1;if (steps.get(i).getTrafficList() != null && steps.get(i).getTrafficList().length > 0) {for (int j = 0;j < steps.get(i).getTrafficList().length;j++) {traffics.add(steps.get(i).getTrafficList()[j]);}}}//            Bundle indexList = new Bundle();
//            if (traffics.size() > 0) {
//                int raffic[] = new int[traffics.size()];
//                int index = 0;
//                for (Integer tempTraff : traffics) {
//                    raffic[index] = tempTraff.intValue();
//                    index++;
//                }
//                indexList.putIntArray("indexs", raffic);
//            }boolean isDotLine = false;if (traffics != null && traffics.size() > 0) {isDotLine = true;}PolylineOptions option = new PolylineOptions().points(points).textureIndex(traffics).width(7).dottedLine(isDotLine).focus(true).color(getLineColor() != 0 ? getLineColor() : Color.argb(178, 0, 78, 255)).zIndex(0);if (isDotLine) {option.customTextureList(getCustomTextureList());}overlayOptionses.add(option);}return overlayOptionses;}/*** 设置路线数据* * @param routeLine*            路线数据*/public void setData(DrivingRouteLine routeLine) {this.mRouteLine = routeLine;}/*** 覆写此方法以改变默认起点图标* * @return 起点图标*/public BitmapDescriptor getStartMarker() {return null;}/*** 覆写此方法以改变默认绘制颜色* @return 线颜色*/public int getLineColor() {return 0;}public List<BitmapDescriptor> getCustomTextureList() {ArrayList<BitmapDescriptor> list = new ArrayList<BitmapDescriptor>();list.add(BitmapDescriptorFactory.fromAsset("Icon_road_blue_arrow.png"));list.add(BitmapDescriptorFactory.fromAsset("Icon_road_green_arrow.png"));list.add(BitmapDescriptorFactory.fromAsset("Icon_road_yellow_arrow.png"));list.add(BitmapDescriptorFactory.fromAsset("Icon_road_red_arrow.png"));list.add(BitmapDescriptorFactory.fromAsset("Icon_road_nofocus.png"));return list;}/*** 覆写此方法以改变默认终点图标* * @return 终点图标*/public BitmapDescriptor getTerminalMarker() {return null;}/*** 覆写此方法以改变默认点击处理* * @param i*            线路节点的 index* @return 是否处理了该点击事件*/public boolean onRouteNodeClick(int i) {if (mRouteLine.getAllStep() != null&& mRouteLine.getAllStep().get(i) != null) {Log.i("baidumapsdk", "DrivingRouteOverlay onRouteNodeClick");}return false;}@Overridepublic final boolean onMarkerClick(Marker marker) {for (Overlay mMarker : mOverlayList) {if (mMarker instanceof Marker && mMarker.equals(marker)) {if (marker.getExtraInfo() != null) {onRouteNodeClick(marker.getExtraInfo().getInt("index"));}}}return true;}@Overridepublic boolean onPolylineClick(Polyline polyline) {boolean flag = false;for (Overlay mPolyline : mOverlayList) {if (mPolyline instanceof Polyline && mPolyline.equals(polyline)) {// 选中flag = true;break;}}setFocus(flag);return true;}public void setFocus(boolean flag) {focus = flag;for (Overlay mPolyline : mOverlayList) {if (mPolyline instanceof Polyline) {// 选中((Polyline) mPolyline).setFocus(flag);break;}}}
}

4.ok

android集成百度地图 驾车路线规划 并在地图上绘制出路线相关推荐

  1. android百度导航实现,Android 集成百度地图实现设备定位

    Android 集成百度地图实现设备定位 步骤1: 申请android 端SDK : http://lbsyun.baidu.com/ 步骤2: 下载基础版SDK 步骤3: 下载示例程序 步骤4: 开 ...

  2. Android 集成百度地图之申请TTS授权最新版

    Android 集成百度地图之申请TTS授权最新版. 前提:登录百度地图开放平台,且已创建好应用. 开发文档-Android 导航SDK-TTS授权申请. 这里有个坑,简单说下,进入http://yu ...

  3. java 高德地图路线规划_高德地图 web 页面里的出行路线规划

    高德地图的引入,有两种方式,第一种在引入链接里直接添加 plugin 参数: 第二种是引入链接里不添加  plugin 参数,而是在在使用插件之前,使用AMap.service方法加载插件,然后在回调 ...

  4. Android集成百度定位以及导航详解

    Android集成百度定位以及导航详解                    百度地图Android SDK 官方下载地址:                            包括类参考.示例代码 ...

  5. Android集成百度定位,超详细,拒绝坑,附demo!!!

    众所周知,百度地图作为定位,地图,导航界的大佬之一,我们的项目中有这方面的需求,百度地图集成也是个不错的选择. 百度地图集成成本极低,首先,它免费,官网文档清晰,demo明确,但还是有很多人要才坑,正 ...

  6. Android集成百度语音识别到HelloWorld需要注意什么?(保姆级教学)

    Android集成百度语音识别怎么避坑? 首先先放一张集成失败的图(记得一定要用真机,因为它不支持VAD,我这里使用Pixel2): 首先你去百度搜索"百度语音识别",或者点击我下 ...

  7. 高德地图驾车路径规划API,获取两地点之间的驾车里程和时间

    高德地图驾车路径规划API,获取两地点之间的驾车里程和时间 import pandas as pd import requests import jsondef get_dis_tm(origin, ...

  8. iOS开发之在地图上绘制出你运动的轨迹

    iOS中的MapKit集成了google地图api的很多功能加上iOS的定位的功能,我们就可以实现将你运行的轨迹绘制到地图上面.这个功能非常有用,比如快递追踪.汽车的gprs追踪.人员追踪等等.这篇文 ...

  9. iOS 在地图上绘制出你运动的轨迹

    iOS中的MapKit集成了google地图api的很多功能加上iOS的定位的功能,我们就可以实现将你运行的轨迹绘制到地图上面.这个功能非常有用,比如快递追踪.汽车的gprs追踪.人员追踪等等.这篇文 ...

最新文章

  1. 我的世界java版双海底神殿种子_我的世界海底神殿种子2021
  2. 后门BROOTKIT代码学习和原理分析
  3. 实验探究 ioremap
  4. 对X264/FFMPEG架构探讨---感觉不错
  5. python元类的使用_python中元类用法实例
  6. 常用的变量值交换方法总结(C++实现)
  7. oracle利用游标添加数据库,Oracle数据库游标的类型及使用实例全解
  8. swift 拖动按钮_Swift 简单控件示例:滑块(UISlider)
  9. 多媒体查询@media
  10. mysql的槽_Mysql槽点 - MySQL及其它开源数据库 - ITPUB论坛-中国专业的IT技术社区...
  11. 洛谷P3195 [HNOI2008]玩具装箱TOY——斜率优化DP
  12. 利用客户端cookie保存用户信息
  13. 让你认识Android 开发简介及应用程序架构示例
  14. 【机器学习】Matlab中实现QQ-plot的一个好工具gqqplot
  15. Java使用poi导出Excel之格式设置
  16. 【无标题】关于CTF的相关知识
  17. 几种常见的水下路由算法介绍
  18. 黄一老师:征信问答这些信用知识你都了解吗?
  19. 尚学堂高淇python笔记_【129天】尚学堂高琪Java300集视频精华笔记(62)
  20. 3dsmax2014安装激活之 “软件许可证检出失败 错误20”或者显示错误5。

热门文章

  1. 卧槽!这些笑死人不偿命的代码,你见识过吗?
  2. 封装微信微博QQ分享lib快速使用
  3. Internet基础
  4. 2020年7月 :国产数据库名录和产品信息一览
  5. 学习分享:Windows下大型文件 CRC 校验
  6. C#跨平台开发桌面程序(Avalonia)
  7. 创建传统的Windows桌面应用程序
  8. Kafka Java客户端Stream API
  9. kafka 自动与手动管理offset
  10. 计算机控制及系统仿真知识点,清华大学出版社-图书详情-《计算机控制技术与系统仿真》...