高德地图开发Android 导航SDK开发指南导航组件—基础功能

高德地图开发Android 导航SDK开发指南导航组件—基础功能

基础功能 最后更新时间: 2021年09月13日

预置条件

请在您工程的 AndroidManifest.xml 中配置声明导航组件 Activity: 

Java

<activity
    android:name="com.amap.api.navi.AmapRouteActivity"
    android:theme="@android:style/Theme.NoTitleBar"
    android:configChanges="orientation|keyboardHidden|screenSize|navigation" />

无起终点启动导航组件

通过AmapNaviPage来启动导航组件,它是一个单例: 

Java

//构建导航组件配置类,没有传入起点,所以起点默认为 “我的位置”
AmapNaviParams params = new AmapNaviParams(null, null, null, AmapNaviType.DRIVER, AmapPageType.ROUTE);
//启动导航组件
AmapNaviPage.getInstance().showRouteActivity(getApplicationContext(), params, null);

传入起终点启动导航组件

通过设置起点、途径点(最多支持三个)、终点启动导航组件;每个点数据可以通过经纬度、名称、高德 POIId 来描述,其参数规则如下:

  1. 经纬度数据为必填参数;
  2. 名称是可选参数仅用于显示地点名称,如果设置了名称参数,会优先显示所设置的名称,如果不传名称将使用默认值,如“终点”、“途径点1”;
  3. 高德 POIId 是可选参数,但强烈建议传入,因为其可以有效的减少绕路情况的出现。设置高德 POIId 来启动导航组件时,将会执行 POI 的精确检索,获得 POI 详情后不仅会辅助算路,也会覆盖传入的经纬度和名称两个参数。
  4. 当不设置起点信息时,会采用用户当前位置作为起点,并显示地点名称为“我的位置”。

Java

//起点
Poi start = new Poi("北京首都机场", new LatLng(40.080525,116.603039), "B000A28DAE");
//途经点
List<Poi> poiList = new ArrayList();
poiList.add(new Poi("故宫", new LatLng(39.918058,116.397026), "B000A8UIN8"));
//终点
Poi end = new Poi("北京大学", new LatLng(39.941823,116.426319), "B000A816R6");
// 组件参数配置
AmapNaviParams params = new AmapNaviParams(start, poiList, end, AmapNaviType.DRIVER, AmapPageType.ROUTE);  
// 启动组件
AmapNaviPage.getInstance().showRouteActivity(getApplicationContext(), params, null);

退出导航组件

导航组件调起之后,用户可以点击“路径规划页面”左上角的回退按钮来退出导航组件,开发者也可以根据需要调用如下函数退出导航组件。 

Java

 //退出导航组件
 AmapNaviPage.getInstance().exitRouteActivity();

导航组件回调方法说明

INaviInfoCallback接口中提供了一系列回调方法,可以实现该接口后,将回调实例通过启动组件方法的最后一个参数传入,关键回调如下(注意:使用导航组件以后,任然可以使用AMapNavi注册导航回调,监听更多导航信息) 

Java

/**
* 导航播报信息回调函数。
*
* @param s 播报文字。
* @since 5.2.0
*/
void onGetNavigationText(String s);
/**
* 当GPS位置有更新时的回调函数。
*
* @param location 当前位置的定位信息。
* @since 5.2.0
*/
void onLocationChange(AMapNaviLocation location);
/**
* 退出组件或退出组件导航的回调函数
* @param pageType 参见{@link com.amap.api.navi.enums.PageType}
* @since 5.6.0
*/
void onExitPage(int pageType);
/**
* 策略选择界面中切换算路偏好回调
* @param strategy 切换后偏好 参见{@link com.amap.api.navi.enums.PathPlanningStrategy}
* @since 6.0.0
*/
void onStrategyChanged(int strategy);
/**
* 获取导航地图自定义View,该View在导航整体界面的下面,注意要设置setLayoutParams并且设置高度
* 设置底部自定义View高度时要给导航组件留出足够的空间用来展示导航控件,避免导航控件出现挤压或重叠的问题
* @return View
* @since 6.1.0
*/
View getCustomNaviBottomView();
/**
* 获取导航地图自定义View,该View在导航界面的当前路名位置,使用该方法以后,将不会显示当前路名
* @return View
* @since 6.1.0
*/
View getCustomNaviView();
/**
* 组件地图白天黑夜模式切换回调
* @param mapType 枚举值参考AMap类, 3-黑夜,4-白天
* @since 6.7.0
*/
void onMapTypeChanged(int mapType);

/**
* 获取导航地图自定义View,该View在导航界面的垂直居中,水平靠左位置
* @return View
* @since 6.9.0
*/
View getCustomMiddleView();
/**
* 导航视角变化回调
* @since 7.1.0
* @param naviMode 导航视角, 1-正北朝上模式 2-车头朝上状态
*/
void onNaviDirectionChanged(int naviMode);
/**
* 昼夜模式设置变化回调
* @since 7.1.0
* @param mode 0-自动切换 1-白天 2-夜间
*/
void onDayAndNightModeChanged(int mode);
/**
* 播报模式变化回调
* @since 7.1.0
* @param mode 1-简洁播报 2-详细播报 3-静音
*/
void onBroadcastModeChanged(int mode);
/**
* 比例尺智能缩放设置变化回调
* @since 7.1.0
* @param enable 是否开启
*/
void onScaleAutoChanged(boolean enable);