实现效果

具体可以参考搜索高德地图API的一些介绍,添加清单文件以及依赖

代码

布局xml

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".Main2Activity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><EditTextandroid:id="@+id/start_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:hint="起点" /><EditTextandroid:id="@+id/end_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:hint="终点" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/walk_btu"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="步行导航" /><Buttonandroid:id="@+id/ride_btu"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="骑行导航" /><Buttonandroid:id="@+id/by_btu"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="自驾导航" /><Buttonandroid:id="@+id/truck_btu"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="货车导航" /></LinearLayout></LinearLayout><com.amap.api.navi.AMapNaviViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout>

activity文件

    package com.example.maps;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.AMapNaviListener;
import com.amap.api.navi.AMapNaviView;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.AMapCalcRouteResult;
import com.amap.api.navi.model.AMapCarInfo;
import com.amap.api.navi.model.AMapLaneInfo;
import com.amap.api.navi.model.AMapModelCross;
import com.amap.api.navi.model.AMapNaviCameraInfo;
import com.amap.api.navi.model.AMapNaviCross;
import com.amap.api.navi.model.AMapNaviInfo;
import com.amap.api.navi.model.AMapNaviLocation;
import com.amap.api.navi.model.AMapNaviRouteNotifyData;
import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo;
import com.amap.api.navi.model.AMapServiceAreaInfo;
import com.amap.api.navi.model.AimLessModeCongestionInfo;
import com.amap.api.navi.model.AimLessModeStat;
import com.amap.api.navi.model.NaviInfo;
import com.amap.api.navi.model.NaviLatLng;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import com.autonavi.tbt.TrafficFacilityInfo;import java.util.ArrayList;public class Main2Activity extends AppCompatActivity implements AMapNaviListener {AMapNaviView mAMapNaviView;AMapNavi mAMapNavi;private EditText startText;private EditText endText;private Button walkBtu;private Button rideBtu;private Button byBtu;private Button truckBtu;boolean isint;ArrayList<NaviLatLng> sList=new ArrayList<>();NaviLatLng start=new NaviLatLng();ArrayList<NaviLatLng> eList=new ArrayList<>();NaviLatLng end=new NaviLatLng();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);supportRequestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main2);initView();//查找控件mAMapNaviView.onCreate(savedInstanceState);//创建地图initNaviMaps();//配置导航地图initListener();}private void initListener() {walkBtu.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {search(1);}});rideBtu.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {search(2);}});byBtu.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {search(3);}});truckBtu.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {search(4);}});}private void search(int rode) {if(isint){String start_Text=startText.getText().toString();String end_Text=endText.getText().toString();if(TextUtils.isEmpty(start_Text)||TextUtils.isEmpty(end_Text)){Toast.makeText(this, "不能为空", Toast.LENGTH_SHORT).show();}else{//计算经纬度poisearch(start_Text,0,rode);poisearch(end_Text,1,rode);}}else{Toast.makeText(this, "初始化失败", Toast.LENGTH_SHORT).show();}}private void poisearch(String keyword, final int type,final int rode) {//关键字//TODO 1:查询条件PoiSearch.Query query=new PoiSearch.Query(keyword,"","");query.setPageSize(1);//设置个数query.setPageNum(1);//设置页码//TODO 2:PoiSearch对象PoiSearch poiSearch = new PoiSearch(this,query);poiSearch.setOnPoiSearchListener(new PoiSearch.OnPoiSearchListener() {@Overridepublic void onPoiSearched(PoiResult poiResult, int i) {//poiResult代表结果  i代表响应码if(poiResult!=null&&i==1000){ArrayList<PoiItem> pois = poiResult.getPois();PoiItem poiItem = pois.get(0);Log.d("zm", "纬度: "+poiItem.getLatLonPoint().getLatitude());Log.d("zm", "经度: "+poiItem.getLatLonPoint().getLongitude());Log.d("zm", "title: "+poiItem.getTitle());Log.d("zm", "电话: "+poiItem.getTel());if(type==0){start.setLatitude(poiItem.getLatLonPoint().getLatitude());start.setLongitude(poiItem.getLatLonPoint().getLongitude());sList.clear();sList.add(start);}else{end.setLatitude(poiItem.getLatLonPoint().getLatitude());end.setLongitude(poiItem.getLatLonPoint().getLongitude());eList.clear();eList.add(end);
//                        int strategy=mAMapNavi.strategyConvert(true,false,false,false,false);sList.add(start);eList.add(end);int convert = mAMapNavi.strategyConvert(true, true, true, true, false);if (rode==1){mAMapNavi.calculateWalkRoute(start,end);//重庆  29.48328436,105.77294206}else if(rode==2){mAMapNavi.calculateRideRoute(start,end);}else if (rode==3){mAMapNavi.calculateDriveRoute(sList,eList,null,convert);}else if (rode==4){AMapCarInfo aMapCarInfo = new AMapCarInfo();aMapCarInfo.setCarType("1");//设置车辆类型,0小车,1货车aMapCarInfo.setCarNumber("京DFZ239");//设置车辆的车牌号码. 如:京DFZ239,京ABZ239aMapCarInfo.setVehicleSize("4");// 设置货车的等级aMapCarInfo.setVehicleLoad("100");//设置货车的总重,单位:吨。aMapCarInfo.setVehicleWeight("99");//设置货车的载重,单位:吨。aMapCarInfo.setVehicleLength("25");//  设置货车的最大长度,单位:米。aMapCarInfo.setVehicleWidth("2");//设置货车的最大宽度,单位:米。 如:1.8,1.5等等。aMapCarInfo.setVehicleHeight("4");//设置货车的高度,单位:米。aMapCarInfo.setVehicleAxis("6");//设置货车的轴数aMapCarInfo.setVehicleLoadSwitch(true);//设置车辆的载重是否参与算路aMapCarInfo.setRestriction(true);//设置是否躲避车辆限行。mAMapNavi.setCarInfo(aMapCarInfo);mAMapNavi.calculateDriveRoute(sList, eList, null, convert);}}}}@Overridepublic void onPoiItemSearched(PoiItem poiItem, int i) {}});//TODO 3:发送查询请求poiSearch.searchPOIAsyn();//TODO 4:处理回调的数据}private void initNaviMaps() {mAMapNavi = AMapNavi.getInstance(this);//添加监听回调,用于处理算路成功mAMapNavi.addAMapNaviListener(this);mAMapNavi.setUseInnerVoice(true);}private void initView() {startText = findViewById(R.id.start_text);endText = findViewById(R.id.end_text);walkBtu = findViewById(R.id.walk_btu);rideBtu = findViewById(R.id.ride_btu);byBtu = findViewById(R.id.by_btu);mAMapNaviView = findViewById(R.id.map);truckBtu = (Button) findViewById(R.id.truck_btu);}@Overridepublic void onInitNaviFailure() {}@Overridepublic void onInitNaviSuccess() {isint=true;}@Overridepublic void onStartNavi(int i) {}@Overridepublic void onTrafficStatusUpdate() {}@Overridepublic void onLocationChange(AMapNaviLocation aMapNaviLocation) {}@Overridepublic void onGetNavigationText(int i, String s) {}@Overridepublic void onGetNavigationText(String s) {}@Overridepublic void onEndEmulatorNavi() {}@Overridepublic void onArriveDestination() {}@Overridepublic void onCalculateRouteFailure(int i) {}@Overridepublic void onReCalculateRouteForYaw() {}@Overridepublic void onReCalculateRouteForTrafficJam() {}@Overridepublic void onArrivedWayPoint(int i) {}@Overridepublic void onGpsOpenStatus(boolean b) {}@Overridepublic void onNaviInfoUpdate(NaviInfo naviInfo) {}@Overridepublic void onNaviInfoUpdated(AMapNaviInfo aMapNaviInfo) {}@Overridepublic void updateCameraInfo(AMapNaviCameraInfo[] aMapNaviCameraInfos) {}@Overridepublic void updateIntervalCameraInfo(AMapNaviCameraInfo aMapNaviCameraInfo, AMapNaviCameraInfo aMapNaviCameraInfo1, int i) {}@Overridepublic void onServiceAreaUpdate(AMapServiceAreaInfo[] aMapServiceAreaInfos) {}@Overridepublic void showCross(AMapNaviCross aMapNaviCross) {}@Overridepublic void hideCross() {}@Overridepublic void showModeCross(AMapModelCross aMapModelCross) {}@Overridepublic void hideModeCross() {}@Overridepublic void showLaneInfo(AMapLaneInfo[] aMapLaneInfos, byte[] bytes, byte[] bytes1) {}@Overridepublic void showLaneInfo(AMapLaneInfo aMapLaneInfo) {}@Overridepublic void hideLaneInfo() {}@Overridepublic void onCalculateRouteSuccess(int[] ints) {mAMapNavi.startNavi(NaviType.GPS);//实时导航}@Overridepublic void notifyParallelRoad(int i) {}@Overridepublic void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) {}@Overridepublic void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) {}@Overridepublic void OnUpdateTrafficFacility(TrafficFacilityInfo trafficFacilityInfo) {}@Overridepublic void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) {}@Overridepublic void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) {}@Overridepublic void onPlayRing(int i) {}@Overridepublic void onCalculateRouteSuccess(AMapCalcRouteResult aMapCalcRouteResult) {}@Overridepublic void onCalculateRouteFailure(AMapCalcRouteResult aMapCalcRouteResult) {}@Overridepublic void onNaviRouteNotify(AMapNaviRouteNotifyData aMapNaviRouteNotifyData) {}@Overrideprotected void onResume() {super.onResume();mAMapNaviView.onResume();}@Overrideprotected void onPause() {super.onPause();mAMapNaviView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mAMapNaviView.onDestroy();}
}

Andriod studio 学习 之 高德地图的导航功能相关推荐

  1. WEB端唤起 百度|腾讯|高德 地图一键导航功能

    WEB端唤起 百度|腾讯|高德 地图一键导航功能 目录 腾讯地图: 百度地图: 高德地图: 坐标拾取器: 腾讯地图: 极简写法: https://3gimg.qq.com/lightmap/v1/ma ...

  2. 安卓开发 高德地图 marker 点击移动位置_高德地图AR导航功能上线 ~

    作者:小A Date:2020-08-20 来源:AIRX社区微信公众号 高德地图近期发布新版本10.60,上线AR导航功能,目前该功能可以在部分安卓手机上可以体验到.AR技术能将虚拟与现实联通,从视 ...

  3. TFBoys语音包上线导航深度娱乐化 高德地图语音导航功能实测

    现在人们的出行都越来越离不开手机地图软件,用来面对复杂的道路.难以把握的路况以及如何选择最优路线等.而当我们使用手机地图软件的时候,除了定位.导航规划等这些基本功能外,最重要的就要当属这款软件的语音能 ...

  4. Android学习之高德地图的通用功能开发步骤(二)

    周一又来了,我就接着上次的开发步骤(一)来吧,继续把高德地图的相关简单功能分享一下 上次写到了第六步,接着写第七步吧. 第七步:定位 + 地图选点 + 路径规划 + 实时导航 以下是我的这个功能Nav ...

  5. 高德地图学习---在高德地图图层上使用google的卫星图

    公司要做一个项目要用到卫星图,但是高德地图提供的卫星图有很多地方由于权限问题还有等等一系列问题是显示不全的,拉到比较偏远的地方就显示不了了,而且清晰度也不够,研究了一下并且在网上查看了好多文章之后发现 ...

  6. android 高德地图显示标题,android学习之高德地图添加标记

    Marker用于标注地图上的一个特定位置 aMap的.addMarker(markerOptions) 方法即可 markerOptions有如下的属性 position(Required) 在地图上 ...

  7. android 高德地图标记,android学习之高德地图添加标记

    Marker用于标注地图上的一个特定位置 aMap的.addMarker(markerOptions) 方法即可 markerOptions有如下的属性 position(Required) 在地图上 ...

  8. Andriod studio学习 之 对话框

    学习第一天 Dialog对话框 一 常用的对话框 1.普通对话框 2.单选对话框 3.多选对话框 4.自定义对话框 5.水平进度对话框 6.圆形进度条对话框 7.日期选择对话框 8.时间对话框 二 自 ...

  9. Flutter学习:高德地图flutter插件增加中英文切换

    高德官方已经有Flutter插件,但在使用过程中发现并没有将中英文切换接口,所以只能在本地修改插件代码. Flutter插件修改 修改文件amap_flutter_map.dart,增加属性mapLa ...

最新文章

  1. oracle如何添加非空约束,oracle 怎么用sql删除非空约束?
  2. 10.利用STM32定时器的PWM输出功能,直接获取PWM波形。
  3. 【杂谈】学深度学习的你有GPU了吗
  4. Android热修复升级探索——SO库修复方案
  5. 在vue中怎么写行内样式高_说说在 Vue.js 中如何绑定样式(class 或 style)
  6. Spring Cloud Context
  7. AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制
  8. 算法训练营 重编码_编码训练营适合您吗?
  9. asp.net学习之再论sqlDataSource 1
  10. 零膨胀负二项回归模型的使用 R语言
  11. puTTY、xshell链接Linux
  12. css画饼状图圆形,CSS样式圆形饼图百分比
  13. 进销存excel_Excel进销存管理系统(升级版),库存进出全自动,使用超方便哦...
  14. 【实习之T100开发】帆软报表笔记
  15. 想成为时间管理大师?试试番茄工作法!
  16. 发那科服务器显示021,发那科FANUC机器人示教器启动黑屏无显示当天修好故障
  17. ps考证电脑怎么改卷
  18. linux 桌面背景图,linux常用命令桌做成的桌面图片,可当背景图片
  19. 站内信设计文档及源代码下载
  20. 如何看待用户反馈意见

热门文章

  1. js 遍历数组并删除
  2. 高等代数第3版下 [丘维声 著] 2015年版_机器学习与线性代数简明教程(下)
  3. 敏捷开发与瀑布式开发的区别(精简比较)
  4. 学习thymeleaf
  5. 拓嘉辰丰电商:拼多多“快团团”买赠常见玩法
  6. springboot + vue 前后端分离项目部署及服务器配置
  7. 这是一篇制造业企业必看的软件资产管理解决方案
  8. GNSS说第(七)讲---自适应动态导航定位(八)---抗差自适应滤波
  9. JAVA图形界面之JTable
  10. 【誉天】这几道华为云计算认证题,你答对了