第一步导入高德地图导航开发包及对应的功能类

第二步路径规划的类继承导航的接口

Activity_NaviChoose extends Activity implements OnRouteSearchListener,AMapNaviListener

OnRouteSearchListener路径规划的接口
AMapNaviListener导航的接口

第三步路径规划

自驾路径规划

/*** 自驾路径规划*/public void dringRoute() {Log.e("route", "--------------dringRoute---------------");RouteSearch routeSerch=new RouteSearch(Activity_NaviChoose.this);routeSerch.setRouteSearchListener(this);LatLonPoint start_lat=new LatLonPoint(la_start, ln_start); //起点LatLonPoint end_lat=new LatLonPoint(la_end,ln_end);//终点RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(start_lat, end_lat);DriveRouteQuery query = new DriveRouteQuery(fromAndTo, RouteSearch.DrivingDefault,null, null, "");// 第一个参数表示路径规划的起点和终点,第二个参数表示驾车模式,第三个参数表示途经点,第四个参数表示避让区域,第五个参数表示避让道路routeSerch.calculateDriveRouteAsyn(query);// 异步路径规划驾车模式查询   // 异步路径规划公交模式查询}

步行路径规划

/*** 步行路径规划*/public void warkRoute() {Log.e("route", "--------------warkRoute---------------");RouteSearch routeSerch=new RouteSearch(Activity_NaviChoose.this);routeSerch.setRouteSearchListener(this);LatLonPoint start_lat=new LatLonPoint(la_start, ln_start); //定位本地坐标LatLonPoint end_lat=new LatLonPoint(la_end,ln_end);RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(start_lat, end_lat);WalkRouteQuery query=new WalkRouteQuery(fromAndTo, RouteSearch.WalkDefault);routeSerch.calculateWalkRouteAsyn(query);}

公交路径规划

public void busRoute() {RouteSearch routeSerch=new RouteSearch(Activity_NaviChoose.this);routeSerch.setRouteSearchListener(this);LatLonPoint start_lat=new LatLonPoint(la_start, ln_start); //定位本地坐标LatLonPoint end_lat=new LatLonPoint(la_end,ln_end);RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(start_lat, end_lat);//是否计算夜班车,默认为不计算。0:不计算,1:计算。可选BusRouteQuery query=new BusRouteQuery(fromAndTo, RouteSearch.BusDefault, "北京", 0);routeSerch.calculateBusRouteAsyn(query);}

第四步 添加路径规划回调方法–重写接口OnRouteSearchListener的方法

自驾回调

@Overridepublic void onDriveRouteSearched(DriveRouteResult result, int rCode) {Log.e("route", "--------------onDriveRouteSearched---------------");if (rCode == 0) {if (result != null && result.getPaths() != null&& result.getPaths().size() > 0) {DriveRouteResult driveRouteResult = result;DrivePath drivePath = driveRouteResult.getPaths().get(0);aMap.clear();// 清理地图上的所有覆盖物DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(this, aMap, drivePath, driveRouteResult.getStartPos(),driveRouteResult.getTargetPos());drivingRouteOverlay.removeFromMap();drivingRouteOverlay.addToMap();drivingRouteOverlay.zoomToSpan();CodeToString(new LatLng(la_start, ln_start));CodeToString(new LatLng(la_end, ln_end));} else {Toast.makeText(getApplicationContext(), "对不起 没有搜索到相关数据", 0).show();}} else if (rCode == 27) {Toast.makeText(getApplicationContext(), "搜索失败 请检查网络连接", 0).show();} else if (rCode == 32) {Toast.makeText(getApplicationContext(), "验证无效", 0).show();} else {Toast.makeText(getApplicationContext()," 未知错误 请稍后重试 错误码为"+rCode, 0).show();}}

步行回调

@Overridepublic void onWalkRouteSearched(WalkRouteResult result, int rCode) {Log.e("route", "--------------onWalkRouteSearched---------------");if (rCode == 0) {if (result != null && result.getPaths() != null&& result.getPaths().size() > 0) {WalkRouteResult  walkRouteResult = result;WalkPath walkPath = walkRouteResult.getPaths().get(0);aMap.clear();// 清理地图上的所有覆盖物WalkRouteOverlay walkRouteOverlay = new WalkRouteOverlay(this,aMap, walkPath, walkRouteResult.getStartPos(),walkRouteResult.getTargetPos());walkRouteOverlay.removeFromMap();walkRouteOverlay.addToMap();walkRouteOverlay.zoomToSpan();CodeToString(new LatLng(la_start, ln_start));CodeToString(new LatLng(la_end, ln_end));} else {Toast.makeText(getApplicationContext(), "对不起 没有搜索到相关数据", 0).show();}} else if (rCode == 27) {Toast.makeText(getApplicationContext(), "搜索失败 请检查网络连接", 0).show();} else if (rCode == 32) {Toast.makeText(getApplicationContext(), "验证无效", 0).show();} else {Toast.makeText(getApplicationContext()," 未知错误 请稍后重试 错误码为"+rCode, 0).show();}}

公交回调

@Overridepublic void onBusRouteSearched(BusRouteResult result, int rCode) {Log.e("route", "--------------onBusRouteSearched---------------");if (rCode == 0) {if (result != null && result.getPaths() != null&& result.getPaths().size() > 0) {BusRouteResult busRouteResult = result;BusPath busPath = busRouteResult.getPaths().get(0);//获取公交换乘路段列表List<BusStep> steps = busPath.getSteps();StringBuffer showBusLine = showBusLine(steps);String string = showBusLine.toString().substring(0, showBusLine.toString().length()-6);saveNaviLine(string,"gj");Log.e("公交线路", string);aMap.clear();// 清理地图上的所有覆盖物BusRouteOverlay routeOverlay = new BusRouteOverlay(this, aMap,busPath,busRouteResult.getStartPos(),busRouteResult.getTargetPos());routeOverlay.removeFromMap();routeOverlay.addToMap();routeOverlay.zoomToSpan();} else {Toast.makeText(getApplicationContext(), "对不起 没有搜索到相关数据", 0).show();}} else if (rCode == 27) {Toast.makeText(getApplicationContext(), "搜索失败 请检查网络连接", 0).show();} else if (rCode == 32) {Toast.makeText(getApplicationContext(), "验证无效", 0).show();} else {Toast.makeText(getApplicationContext()," 未知错误 请稍后重试 错误码为"+rCode, 0).show();}}

其中公交可以获取站点的信息

/*** @param steps* 分析公交线路*/private StringBuffer showBusLine(List<BusStep> steps) {sb.delete(0,sb.length());Log.e("公交路段数量", "----------------------"+steps.size());for(int i=0;i<steps.size();i++){BusStep busStep = steps.get(i);RouteBusLineItem busLine = busStep.getBusLine(); //获取公交导航信息//System.out.println("-------------------"+busLine.toString()); 地铁1号线(四惠东--苹果园) 05:05-23:15if(busLine!=null && !busLine.equals(null)){Log.e("公交站名称", "--------------"+busLine.getBusLineName());BusStationItem arrivalBusStation = busLine.getArrivalBusStation();//到达站BusStationItem departureBusStation = busLine.getDepartureBusStation();//出发站String busStationName = arrivalBusStation.getBusStationName();//到达站公交站名称String busStationName2 = departureBusStation.getBusStationName();//出发站公交站名称Log.e("公交",busLine.getBusLineName()+"到达"+busStationName);//Log.e("站名","到达站公交站名称"+busStationName+"出发站公交站名称"+busStationName2);sb.append(busLine.getBusLineName()+"到达"+busStationName+"--换乘--");}else{Log.e("null", "------------busStep.getBusLine().equals(null)---------------------");}}return sb;}

第五步 添加自驾和步行的导航

第一步 注册导航和语音

可以在oncreate()方法中注册

 //语音播报开始TTSController ttsManager = TTSController.getInstance(this);// 初始化语音模块ttsManager.init();AMapNavi.getInstance(this).setAMapNaviListener(ttsManager);// 设置语音模块播报TTSController.getInstance(this).startSpeaking();//导航注册AMapNavi.getInstance(this).setAMapNaviListener(this);

第二部 开启导航的方法

/*** 开启导航的方法*/public void StartNavi(int i) {Log.e("navi", "-----------StartNavi-------------");//起点终点NaviLatLng mNaviStart = new NaviLatLng(la_start, ln_start);NaviLatLng mNaviEnd = new NaviLatLng(la_end,ln_end);//起点终点列表ArrayList<NaviLatLng> mStartPoints = new ArrayList<NaviLatLng>();ArrayList<NaviLatLng> mEndPoints = new ArrayList<NaviLatLng>();mStartPoints.add(mNaviStart);mEndPoints.add(mNaviEnd);if(i==1){  //自驾    起点  终点  途经点  模式:最快  最省钱等AMapNavi.getInstance(this).setAMapNaviListener(this);AMapNavi.getInstance(this).calculateDriveRoute(mStartPoints,mEndPoints, null, AMapNavi.DrivingDefault);}else{  //步行AMapNavi.getInstance(this).calculateWalkRoute(mNaviStart, mNaviEnd); }}

第三步 导航的回调,重写导航接口AMapNaviListener的方法

其中这个方法标志着导航成功调用导航页面

@Overridepublic void onCalculateRouteSuccess() {Log.e("Navi", "-------onCalculateRouteSuccess--------------------");Intent intent = new Intent(Activity_NaviChoose.this,SimpleNaviActivity.class);  //导航页面intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);Bundle bundle=new Bundle();bundle.putInt(Utils.ACTIVITYINDEX, Utils.SIMPLEGPSNAVI);bundle.putBoolean(Utils.ISEMULATOR, false);intent.putExtras(bundle);startActivity(intent);}

添加导航页面布局及相关参数

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/map_container"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><com.amap.api.navi.AMapNaviView
        android:id="@+id/simplenavimap"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>
<string name="preference_default_tts_role">xiaoyan</string><string name="preference_key_tts_speed">tts_speed</string><string name="preference_title_tts_speed">语速</string><string name="preference_default_tts_speed">50</string><string name="preference_dialog_title_tts_speed">选择语速</string><string name="preference_key_tts_volume">tts_volume</string><string name="preference_title_tts_volume">音量</string><string name="preference_default_tts_volume">50</string><string name="preference_dialog_title_tts_volume">选择音量</string><string name="preference_key_tts_pitch">tts_pitch</string><string name="preference_title_tts_pitch">语调</string><string name="preference_default_tts_pitch">50</string><string name="app_id">5613985e</string>

最后处理一下导航页面类的返回按钮跳转回哪个页面即可

高德地图---路径规划---语音导航的开发相关推荐

  1. 关于调用高德地图路径规划清除问题解决方案【js】

    关于调用高德地图路径规划清除问题解决方案[js] 参考文章: (1)关于调用高德地图路径规划清除问题解决方案[js] (2)https://www.cnblogs.com/qk523/articles ...

  2. ArcGIS与高德地图路径规划API

    原文链接,欢迎关注一点规划从杜甫草堂到三圣花乡| ArcGIS与高德地图路径规划APIhttps://mp.weixin.qq.com/s/9Q6GF_4bqv_uw75hdExLyQ 高德API 申 ...

  3. 高德地图路径规划接口计算出发地与目的地的通行时间计算

    计算两点之间通行时间,可以借助gis的网络分析实现,但网络分析需要较为完整的路网数据,且分析过程复杂,借助高德地图路径规划接口可实现不同交通方式下,两点之间的通行时间计算,快速简洁.本文以驾车方式为例 ...

  4. 高德地图小程序步行路线显示_微信小程序 高德地图路线规划实现过程详解

    前言 最近项目中做到相关网约车小程序.需要使用到地图中的路线规划,对3种地图进行了分析.这里稍微做一下总结: 百度地图 百度坐标 (BD-09) 腾讯地图 火星坐标(GCJ-02) 高德地图 火星坐标 ...

  5. iOS 高德地图路线规划

    最近做了高德地图路线规划,把自己不熟的点记录一下: 1.地图不显示当前位置精准圈:设置mapview的 customizeUserLocationAccuracyCircleRepresentatio ...

  6. 高德地图哪个语音包最好_高德地图妲己语音

    高德地图妲己语音包是一款王者荣耀中的妲己智能语音导航,使用小妲己语音系统你可以听到妲己声音的导航,就像在玩游戏体验一样,给你别样的感觉体验,喜欢小妲己的不要错过这款语音包,快来下载. 高德地图小妲己语 ...

  7. Cesium结合高德SDK路径规划

    Cesium结合高德SDK路径规划 申请高德SDK的使用 链接: 点这里 按官网的提示申请,具体流程这里就不在赘述了. 路径规划API:点这里 注意:其中的sig签名:点这里 ![在这里插入图片描述] ...

  8. 3.蚁群算法求解格栅地图路径规划matlab代码

    往期: 1.Dijkstra算法求解格栅地图路径matlab代码_墨叔叔的博客-CSDN博客 2.A*搜索算法原理及matlab代码_墨叔叔的博客-CSDN博客 一.蚁群算法原理 原理:蚁群系统(An ...

  9. 互联网日报 | 双十一购物狂欢火爆开启;小米重返全球智能手机出货量前三;高德地图上线车道级导航...

    今日看点 ✦ 小米Q3逆势大涨,全球智能手机市场份额重返第三 ✦ 高德地图率先上线车道级导航,华为Mate 40用户可尝鲜体验 ✦ 伴鱼总付费用户超200万,付费用户10个月增速300% ✦ 英雄联盟 ...

  10. 【Matlab路径规划】A_star算法机器人栅格地图路径规划【含源码 116期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]A_star算法机器人栅格地图路径规划[含源码 116期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

最新文章

  1. 9款超赞的AI开源项目!| 本周Github精选
  2. Java后端职业规划,附学习笔记+面试整理+进阶书籍
  3. oracle和mysql文件怎么打开_Oracle vs Mysql--架构、sql查询执行流程及SQL解析顺序区别说明-sql文件怎么打开...
  4. java aes密钥生成_如何在Java(Android)中生成与.Net中相同的AES密钥?
  5. 游戏美术本地化技巧:不重新创作,几个简单步骤修改出一张完美的游戏配图
  6. 计算机网络专业教学模式,计算机网络技术专业教学模式改革探索
  7. c# 批量mqtt_C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)
  8. 重启手机出现机器人加一个叹号_解决win10上不了网出现红叉,网卡驱动异常代码56的问题...
  9. Delphi BLE 控件
  10. 浅谈数据结构之顺序队列(五)
  11. 小程序“成语猜题”部分答案,总共28667题
  12. 【Qt】Qt 开发环境安装 ( Qt 版本 5.14.2 | Qt 下载 | Qt 安装 )
  13. loj10102 旅游航道
  14. html中如何把两行合并单元格,怎么把表格上下两行合并单元格合并
  15. Python语法练习
  16. 艾永亮:酒瓶中的战争,谁是下一瓶被拿起的葡萄酒
  17. Mac安装软件时提示已损坏的解决方法
  18. 三星海外远程真机调试使用教程
  19. difference_type解析
  20. 德国汽车冲压模制造商为何唯独选择了WorkNC软件超过20年

热门文章

  1. Java 的 VO类
  2. python字典笔记
  3. ECDSA私钥der格式
  4. 胡侃学习计算机--理论之外-From南大小百合
  5. 新电脑如何进行磁盘分区?
  6. 小感之绝知此事要躬行
  7. 创建型模式——建造者模式(Builder Pattern)
  8. 深入理解G1垃圾收集器
  9. 知识星球<我们谈论数据科学>-python30天打卡训练营Day1
  10. AssertionError: 1 columns passed, passed data had 5 columns错误解决