预置条件

请在您工程的 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);