示例中心
功能在线体验
控制台

高德 开发 Android 导航SDK 开发指南 导航组件 使用导航组件

更新时间:2018年07月06日

简介

导航组件功能自 Android 导航 SDK V5.2.0 版本起开始支持。

  • 导航组件是一套有界面封装的导航模块,导航组件的推出给开发者提供了更便捷的方式,将导航能力集成到自己的APP中。导航组件采用与高德地图客户端同样的界面元素与交互方式,定期进行界面元素更新与高德地图客户端保持同步。
  • 导航组件调起方式简单,但无法进行界面的自定义,如果您有一些自定义需求,还是要使用之前的导航View,可以参考导航Demo中的导航UI自定义部分。
  • 导航组件涵盖线路规划起点、终点选择页面,多路线规划选择页面,导航页面。效果如下:

启动导航组件

第一步,增加所需权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

第二步,在 AndroidManifest.xml 中配置 Activity

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

第三步,启动导航组件

提供两种方式启动导航组件,分别是不传入起终点启动导航组件(直接启动,起点终点由用户输入),以及传入起点、途径点(可选)、终点启动导航组件。

不传入起点、途径点、终点启动导航组件

AmapNaviPage.getInstance().showRouteActivity(context, new AmapNaviParams(null), IndexActivity.this);

传入起点、途径点、终点启动导航组件

以下内容自 Android 导航 SDK V5.3.0版本起支持

通过设置起点、途径点(最多支持三个)、终点直接调起路径规划页面;支持通过设置页面调起类型选择方式,当前默认仅可选择驾车导航模式。

一个点数据可以通过经纬度(latlng),名称(name),高德POIId来描述,其参数规则如下:

  • 经纬度数据为必填参数;
  • 名称是可选参数仅用于显示地点名称,如果设置了名称参数,会优先考虑显示所设置的名称,如果不传名称将使用默认值,如“终点”、“途径点1”;
  • 高德POIId是可选参数,如果设置高德POIId数据,启动导航组件时将会使用POIId做POI精确检索,获得的POI出入口信息经纬度以及POI名称会覆盖设置的经纬度(latlng)和名称(name)数据两个参数。
  • 当不设置起点信息时,会采用用户当前位置作为起点,并显示地点名称为“我的位置”。

传入起点、途径点、终点启动导航组件示例:

Poi start = new Poi("三元桥", new LatLng(39.96087,116.45798), "");
/**终点传入的是北京站坐标,但是POI的ID "B000A83M61"对应的是北京西站,所以实际算路以北京西站作为终点**/
Poi end = new Poi("北京站", new LatLng(39.904556, 116.427231), "B000A83M61");
List<Poi> wayList = new ArrayList();//途径点目前最多支持3个。
wayList.add(new Poi("团结湖", new LatLng(39.93413,116.461676), ""));
wayList.add(new Poi("呼家楼", new LatLng(39.923484,116.461327), ""));
wayList.add(new Poi("华润大厦", new LatLng(39.912914,116.434247), ""));
AmapNaviPage.getInstance().showRouteActivity(context, new AmapNaviParams(start, wayList, end, AmapNaviType.DRIVER), naviInfoCallback);

传入起点、终点启动导航组件示例:

Poi start = new Poi("三元桥", new LatLng(39.96087,116.45798), "");
/**终点传入的是北京站坐标,但是POI的ID "B000A83M61"对应的是北京西站,所以实际算路以北京西站作为终点**/
Poi end = new Poi("北京站", new LatLng(39.904556, 116.427231), "B000A83M61");
AmapNaviPage.getInstance().showRouteActivity(context, new AmapNaviParams(start, null, end, AmapNaviType.DRIVER), naviInfoCallback);

启动货车导航组件:

以下内容从导航SDK v6.0.0起开始支持

如果您需要使用货车导航组件,请您通过AMapCarInfo方法设置货车对应的参数,并发起导航。

特别注意:货车路径规划目前默认给出的是测试配额,每日调用次数上限100次,QPS上限1,如果您有更高配额要求,请通过工单系统提交商务合作类工单进行沟通。

调用方式请参考:

AMapCarInfo aMapCarInfo = new AMapCarInfo();
aMapCarInfo.setCarType("1");//设置车辆类型,0小车,1货车
aMapCarInfo.setCarNumber("京DFZ239");//设置车辆的车牌号码. 如:京DFZ239,京ABZ239
aMapCarInfo.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);//设置是否躲避车辆限行。

AmapNaviParams naviParams = new AmapNaviParams(null, null, null, AmapNaviType.DRIVER);
naviParams.setCarInfo(aMapCarInfo);

AmapNaviPage.getInstance().showRouteActivity(getApplicationContext(), naviParams, WelcomeActivity.this);


可用的回调方法

实现 INaviInfoCallback 监听器后可接收如下回调:

导航初始化失败时的回调函数:

/**
     * 导航初始化失败时的回调函数
     **/
    onInitNaviFailure()

导航播报信息回调函数:

/**
     * 导航播报信息回调函数。
     * @param text 语音播报文字
     **/
    onGetNavigationText(String text)

GPS位置有更新时的回调函数:

/**
     * 当GPS位置有更新时的回调函数。
     *@param location 当前自车坐标位置
     **/
    onLocationChange(AMapNaviLocation location)

到达目的地后回调函数:

/**
     * 到达目的地后回调函数。
     **/
    onArriveDestination()

启动导航后的回调函数:

/**
     * 启动导航后的回调函数
     **/
    onStartNavi()

算路成功回调:

 /**
     * 算路成功回调
     * @param routeIds 路线id数组
     */
    onCalculateRouteSuccess(int[] id)

路径规划失败后的回调函数:

/**
     * 步行或者驾车路径规划失败后的回调函数
     **/
    onCalculateRouteFailure(int errorCode)

停止语音回调,收到此回调后可以停止播放语音,用于自定义语音播报模块:

/**
     * 停止语音回调,收到此回调后用户可以停止播放语音
     **/
    onStopSpeaking()

注意

1、导航组件不能与之前的API同时使用,两者只能同时使用一项。

      

移动端
示例中心
功能
在线体验
常见问题