预置条件
请在您工程的 AndroidManifest.xml 中配置声明导航组件 Activity:
android:name="com.amap.api.navi.AmapRouteActivity"
android:theme="@android:style/Theme.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize|navigation" />
无起终点启动导航组件
通过AmapNaviPage来启动导航组件,它是一个单例:
//构建导航组件配置类,没有传入起点,所以起点默认为 “我的位置”
AmapNaviParams params = new AmapNaviParams(null, null, null, AmapNaviType.DRIVER, AmapPageType.ROUTE);
//启动导航组件
AmapNaviPage.getInstance().showRouteActivity(getApplicationContext(), params, null);
传入起终点启动导航组件
通过设置起点、途径点(最多支持三个)、终点启动导航组件;每个点数据可以通过经纬度、名称、高德 POIId 来描述,其参数规则如下:经纬度数据为必填参数;
名称是可选参数仅用于显示地点名称,如果设置了名称参数,会优先显示所设置的名称,如果不传名称将使用默认值,如“终点”、“途径点1”;
高德 POIId 是可选参数,但强烈建议传入,因为其可以有效的减少绕路情况的出现。设置高德 POIId 来启动导航组件时,将会执行 POI 的精确检索,获得 POI 详情后不仅会辅助算路,也会覆盖传入的经纬度和名称两个参数。
当不设置起点信息时,会采用用户当前位置作为起点,并显示地点名称为“我的位置”。
//起点
Poi start = new Poi("北京首都机场", new LatLng(40.080525,116.603039), "B000A28DAE");
//途经点
List 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);
退出导航组件
导航组件调起之后,用户可以点击“路径规划页面”左上角的回退按钮来退出导航组件,开发者也可以根据需要调用如下函数退出导航组件。
//退出导航组件
AmapNaviPage.getInstance().exitRouteActivity();
导航组件回调方法说明
INaviInfoCallback接口中提供了一系列回调方法,可以实现该接口后,将回调实例通过启动组件方法的最后一个参数传入,关键回调如下(注意:使用导航组件以后,任然可以使用AMapNavi注册导航回调,监听更多导航信息)
/**
* 导航播报信息回调函数。
*
* @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并且设置高度
* @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);