Post on 30-Nov-2021
腾讯 Android 导航 SDK 接入文档
导航版本号 5.2.6 支持 Android 4.0 及以上系统
腾讯 ANDROID 导航 SDK接入文档 .................................................................................. 0
1.概述 ................................................................................................................................. 2
1.1路径规划 ................................................................................................................... 2
1.2实时导航 ................................................................................................................... 3
1.3模拟导航 ................................................................................................................... 4
1.4导航设置 ................................................................................................................... 4
1.5自定义导航面板 ........................................................................................................ 8
1.6添加控件 ................................................................................................................... 9
2.工程配置 ........................................................................................................................ 10
2.1申请开发者秘钥 ...................................................................................................... 10
2.2新建工程(已有可跳过) ............................................................................................. 11
2.3设置腾讯地图、导航 KEY ........................................................................................ 11
2.4 引入导航 SDK、地图 SDK、定位 SDK .................................................................. 12
2.5权限设置 ................................................................................................................. 12
2.6混淆配置 ................................................................................................................. 13
3. 快速接入 ....................................................................................................................... 14
3.1 驾车导航 ................................................................................................................. 14
3.2 步行导航 ................................................................................................................. 19
3.3 骑行导航 ................................................................................................................. 22
1
4.功能概述 ........................................................................................................................ 25
4.1 设置设备号 ............................................................................................................. 25
4.2 驾车导航 ................................................................................................................. 25
4.3 步行导航 ................................................................................................................. 40
4.4骑行导航 ................................................................................................................. 46
5.网约车场景 .................................................................................................................... 52
5.1 快车业务 ................................................................................................................. 52
2
1.概述
腾讯导航 SDK 是一款针对在线导航的产品。该产品的路径计算与实时交通信息
相结合,提供路径规划、实时导航、模拟导航、导航设置、自定义导航界面等
功能,力求为用户提供更加人性化的导航服务。
Demo 地址: https://github.com/TencentLBS/TencentNaviDemo_Android
1.1路径规划
路径规划可根据起点、终点、途径点的经纬度和 PoiId(PoiId 可根据场景
需求决定是否使用)以及驾车路线的参数配置,给用户提供出行路线策略。路
径规划成功后得到一条或多条路线信息,根据路线信息可以在地图上进行位置
标注、绘制路线等操作。
途经点最多可设置十个,驾车路线的参数配置包括是否走高速、是否躲避
拥堵、是否避开收费道路、设置起点道路类型等。
起点道路类型包括在主路、在辅路、在桥上等,设置该字段可以提升路线
规划起点位置的准确程度,默认为无详细起点路段类型。
Marker(是用来表示一个点位置的可见元素),可以在地图上用默认 marker 标注
位置信息,也可以自定义图标。如 Demo 中的“起”、“终”、“经”分别标注
了路线中的起点、终点、途经点。
例:设置起点为北京动物园,途经点为北京儿童医院,终点为北京西站,
躲避拥堵和高速,起始点在主路时,路线规划效果如下图:(图中大头针颜
色、路线颜色和宽度等可根据地图 SDK 的介绍进行更改)
3
1.2实时导航
实时导航是基于用户真实的定位信息来驱动的导航过程。路线规划完成
后,就可以开始实时导航。导航状态下,页面展示导航面板、车道线、路口放
大图、自车点罗盘等,开发者可设置其隐藏/显示。
导航面板包含转弯图示、下一条道路名称和剩余距离等信息。
如下图所示,车道线通过白色高亮箭头指示用户可选择的车道类型,路口
放大图能够显示道路走向,多岔路、道路具体形状、车道数量等,通过黄色高
亮线段更清晰的标明路线防止用户混淆。
自车点罗盘的自定义可参见本文档“快速入门指南”中的“自定义导航界
面”。
4
1.3模拟导航
模拟导航中设置起点、终点和途经点的经纬度进行路径规划,路线规划成
功后,根据得到的路线信息,进行模拟导航。模拟导航时不获取用户的实时位
置,开发者可以用于模拟导航测试。
1.4导航设置
用户可以根据需求来设置相应的导航模式、日夜间模式、主辅路切换功
能,
具体效果如下:
2D 模式:导航时地图始终朝北,车头实时改变方向
5
3D 模式:导航时车头始终朝上,地图实时旋转
全览模式:导航时地图显示导航的起点到终点的完整路线
6
剩余全览模式:导航时地图显示车辆的当前位置点到终点的路线
日间模式:浅色系底图,设置该模式,则导航过程中始终为日间状态
7
夜间模式:深色系底图,设置该模式,则导航过程中始终为夜间状态
自动模式:设置该模式,导航 SDK 通过对当前系统时间和经纬度的判断自
动切换到日间或夜间模式
例:2019 年 5月 9日北京日夜间模式切换的时间为:
04:57 切换为日间模式
19:25切换为夜间模式
8
回弹模式:回弹模式:默认值,导航态中,用户使用手势操作地图后进入
该模式,手势结束 5秒后切换回之前的导航模式,直接设置为该模式不会被响
应。
主辅路切换:在用户进行路线规划时,通过配置起点路段类型属性能极大
地提高路线规划的准确性。其中路段类型包括:在桥上、在桥下、在主路、在
辅路、在对面、在桥下主路、在桥下辅路。当用户处于导航过程之中时,用户
也能够通过回调方法拿到当前行驶路段可切换的道路类型信息,具体方法方法
见下文。
1.5自定义导航面板
开发者可以根据需要自定义导航面板的位置、大小、内容,隐藏,等信息
9
1.6添加控件
用户可对导航页面添加自己的控件
10
2.工程配置
2.1申请开发者秘钥
1) 创建开发者密钥:进入网站 https://lbs.qq.com/console/key.html,
创建开发者账号。如果之前已经创建过,可以直接登录。
2) 进入控制台,在 key 管理中创建新密钥,输入新 key 名称和验证码,勾
选“已阅读并同意以上条款”,会获得对应的 key。
3) 进入 key设置,启用产品中勾选“地图 SDK”选项,在输入框中填写对
应的.Android应用请填写:包名(package name),点击保存,完成 key的申
请。此时用户即可用刚创建的 key了。
11
4) 导航 SDK 的权限需联系小助手开通权限。
2.2新建工程(已有可跳过)
第 1 步,下载并安装 Android Studio。按照指南下载并安装 Android
Studio。(注:下载地址为 Google官方网站)
https://developer.android.com/studio?pkg=studio
第 2 步,创建项目。按以下步骤新建一个 Empty Activity 的应用项目。
1、启动 Android Studio。如果您看到 Welcome to Android Studio 对话
框,请选择 Start a new Android Studio project,否则,请点击 Android
Studio 菜单栏中的 File,然后点击 New->New Project,按提示输入您的应用
名称、公司域和项目位置。 然后点击 Next。
2、选择您的应用所需的机型。 如果您不能确定自己的需要,只需选择
Phone and Tablet。然后点击 Next。
3、在“Add an activity to Mobile”对话框中选择 Empty Activity。
然后点击 Next。
4、按提示输入 Activity 名称、布局名称和标题。 使用默认值即可。 然
后点击 Finish。
2.3设置腾讯地图、导航 Key
在 Application 标签中的配置如下所示: <application android:allowBackup="true"
12
android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="TencentMapSDK" android:value="申请的 Key"/>
</application>
2.4 引入导航 SDK、地图 SDK、定位 SDK
1) Maven引入导航 SDK 和地图 SDK:
repositories { maven { url "https://oss.sonatype.org/content/groups/public" }
} dependencies { // 地图 SDK implementation 'com.tencent.map:tencent-map-vector-sdk:4.3.9.9' // 导航 SDK implementation 'com.tencent.map:tencent-map-nav-sdk:5.2.6.0' // 导航支持库 implementation 'com.tencent.map:tencent-map-nav-surport:1.0.2.6'
}
2) 引用定位 SDK v8.7.5.1。使用导航 SDK推荐使用定制版定位 SDK,可联系小
助手获得。
2.5权限设置
SDK 需要使用网络,访问硬件存储等系统权限,在 AndroidManifest.xml 文
件里,添加如下权限:
<!-- 通过 GPS 得到精确位置 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 通过网络得到粗略位置 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 支持 A-GPS 辅助定位 --> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
13
<!-- 访问 WiFi 状态 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 修改 WiFi 状态,发起 WiFi 扫描 --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 访问网络状态, 检测网络的可用性,需要网络运营商相关信息用于网络定位 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 访问网络的变化 --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 读写手机 SD 卡权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 访问网络 --> <uses-permission android:name="android.permission.INTERNET" />
2.6混淆配置
在 module里找到 proguard-rules.pro文件,添加:
-dontwarn com.qq.taf.** -keep class com.qq.taf.** { *; } -keep public class com.tencent.map.ama.navigation.data.NavigationJNI {*;} -keep public class com.google.webp.libwebpJNI {*;} -dontwarn sun.misc.Unsafe -keep, includedescriptorclasses public class com.tencent.map.lib.gl.JNI { *;} -keep, includedescriptorclasses public class com.tencent.map.lib.gl.* { *;} -keep, includedescriptorclasses public class com.tencent.tencentmap.mapsdk.maps.a.* { *;} # 地图 SDK -keep class com.tencent.tencentmap.**{*;} -keep class com.tencent.map.**{*;} -keep class com.tencent.beacontmap.**{*;} -keep class navsns.**{*;} -dontwarn com.qq.** -dontwarn com.tencent.** # 定位 SDK -keepclassmembers class ** { public void on*Event(...); }
14
-keep class c.t.**{*;} -keep class com.tencent.map.geolocation.**{*;} -dontwarn org.eclipse.jdt.annotation.** -dontwarn c.t.** # 导航 SDK -dontwarn sun.misc.Unsafe -keep, includedescriptorclasses public class com.tencent.map.lib.gl.JNI { *;} -keep, includedescriptorclasses public class com.tencent.map.lib.gl.* { *;} -keep, includedescriptorclasses public class com.tencent.tencentmap.mapsdk.maps.a.* { *;} -keep class com.iflytek.tts.TtsService.** { *; } -keep class com.tencent.map.navi.surport.** { *; } -keep class com.tencent.map.screen.** { *; } -keep class com.tencent.beacon.** { *; }
然后在 module 的 build.gradle文件中引用该混淆文件: buildTypes { release {
minifyEnabled true proguardFiles getDefaultProguardFile('proguard-
android.txt'), 'proguard-rules.pro' }
}
3.快速接入
3.1 驾车导航
3.1.1 导航初始化
在 layout文件中添加 CarNaviView: <com.tencent.map.navi.car.CarNaviView
android:id="@+id/car_navi_view" android:layout_width="match_parent" android:layout_height="match_parent"/>
地图生命周期控制。生命周期管理方法,用户需要在对应生命周期回调方
法中,主动调用。
@Override protected void onStart() {
mCarNaviView.onStart();
15
super.onStart(); } @Override protected void onRestart() {
mCarNaviView.onRestart(); super.onRestart();
} @Override protected void onResume() {
mCarNaviView.onResume(); super.onResume();
} @Override protected void onPause() {
mCarNaviView.onPause(); super.onPause();
} @Override protected void onStop() {
mCarNaviView.onStop(); super.onStop();
} @Override protected void onDestroy() {
mCarNaviView.onDestroy(); super.onDestroy();
}
初始化 TencentCarNaviManager 实例,推荐使用单例模式:
// 实例化导航管理器 mTencentCarNaviManager = new TencentCarNaviManager(this); // 设置回调监听 Private TencentRouteSearchCallback mTencentSearchCallback = new TencentRouteSearchCallback() {
@Override public void onRouteSearchFailure(int errorCode, String
errorMessage) { // 算路失败回调
} @Override public void onRouteSearchSuccess(ArrayList<RouteData> routes)
{
16
//最多三条路线数据:路线距离,路线点串,预估时间,路况数据等
} }; // 注册导航地图,接受导航事件 mTencentCarNaviManager.addNaviView(mCarNaviView); // 开启内置的语音播报模块 mTencentCarNaviManager.setInternalTtsEnabled(true);
3.1.2 驾车路径规划
发起路线规划代码如下
mTencentCarNaviManager.searchRoute(from,to, wayPoints, carSearchOptions, mTencentRouteSearchCallback);
其中参数说明如下表格所示,
参数 类型 必
填 说明
from NaviPoi 是 起点,一般使用当前定
位点赋值
latitude double 是 纬度
longitude double 是 经度
poiId String 否 起点 POI ID,传入后,
优先级高于坐标
to NaviPoi 是 目的地。
latitude double 是 纬度
longitude double 是 经度
17
poiId String 否
POI ID(可通过腾讯位
置服务地点搜索服务得
到),当目的地为较大
园区、小区时,会以引
导点作为终点(如出入
口等),体验更优。
该参数优先级高于坐
标,但是当目的地无引
导点数据或 POI ID 失
效时,仍会使用坐标
作为终点
wayPoints List<NaviPoi> 否
途经点数组,最多设置
10个。路线规划按照数
组的顺序进行,不会按
路径最短原则进行调
整。
carSearchOptions CarRouteSearchOptions 是 路线规划策略
avoidToll Boolean 否 是否避开收费站
avoidHighway Boolean 否 是否避开高速公路
avoidCongestion Boolean 否 是否避开拥堵
navScene int 是 1:接驾;2:送驾
preLocations List<GpsLocation> 否
前序点。最好传入路线
规划之前的 50个定位
点,以提高起点的准确
行。
truckRouteSearchParams TruckRouteSearchParams 否
货车算路属性。当有货
车算路需求时使用,具
体参考导航 SDK 接口文
档
avoidAreaList List<List<LatLng>> 否
路线规划避让区域。最
多支持 32个避让区
域,每个区域可设置 9
个顶点,需为凸多边
形,顶点逆时针排列。
18
如果数据不合法,则避
让策略不生效
3.1.3 开启、结束导航
// 使用第 routeIndex 条路开启导航 mTencentCarNaviManager.startNavi(routeIndex);
// 导航过程中将定位 SDK 回调获得到的定位点传给导航 SDK,设置回调频率为每秒 1 次 private TencentLocationListener mTencentLocationListener = new TencentLocationListener() {
@Override public void onLocationChanged(TencentLocation tencentLocation,
int error, String reason) {
if (error != TencentLocation.ERROR_OK || tencentLocation == null) { // 定位失败
return; }
mTencentCarNaviManager.updateLocation(LocationUtils.convertToGpsLocation(tencentLocation), error, reason);
} @Override public void onStatusUpdate(String name, int status, String desc) { } };
// 结束导航 mTencentCarNaviManager.stopNavi();
模拟导航方法:
//开启模拟导航,使用第 1 条路线进行导航
mTencentCarNaviManager.startSimulateNavi(0); //关闭模拟导航
mTencentCarNaviManager.stopSimulateNavi() ;
19
3.2 步行导航
3.2.1 导航初始化
在 layout文件中添加 WalkNaviView:
<com.tencent.map.navi.walk.WalkNaviView android:id="@+id/walk_navi_view" android:layout_width="match_parent" android:layout_height="match_parent"/>
地图生命周期控制。生命周期管理方法,用户需要在对应生命周期回调方
法中,主动调用。
@Override protected void onStart() {
mWalkNaviView.onStart(); super.onStart();
} @Override protected void onRestart() {
mWalkNaviView.onRestart(); super.onRestart();
} @Override protected void onResume() {
mWalkNaviView.onResume(); super.onResume();
} @Override protected void onPause() {
mWalkNaviView.onPause(); super.onPause();
} @Override protected void onStop() {
mWalkNaviView.onStop(); super.onStop();
} @Override protected void onDestroy() {
mWalkNaviView.onDestroy(); super.onDestroy();
20
}
初始化 TencentWalkNaviManager 实例,推荐使用单例模式:
// 实例化导航管理器 mTencentWalkNaviManager = new TencentWalkNaviManager(this); // 设置回调监听 Private TencentRouteSearchCallback mTencentSearchCallback = new TencentRouteSearchCallback() {
@Override public void onRouteSearchFailure(int errorCode, String
errorMessage) { // 算路失败回调
} @Override public void onRouteSearchSuccess(ArrayList<RouteData> routes)
{ //最多三条路线数据:路线距离,路线点串,预估时间,路况数据等
} }; // 注册导航地图,接受导航事件 mTencentWalkNaviManager.addTencentNaviListener(mWalkNaviView);
3.2.2 步行路径规划
发起路径规划代码如下
mTencentWalkNaviManager.searchRoute(from,to, mTencentRouteSearchCallback);
其中参数说明如下表格所示,
参数 类型 必
填 说明
from NaviPoi 是 起点,一般使用当前定位
点赋值
latitude double 是 纬度
21
longitude double 是 经度
poiId String 否 兴趣点的 id
to NaviPoi 是 目的地。
3.2.3 开启、结束导航
// 使用第 routeIndex 条路开启导航 mTencentWalkNaviManager.startNavi(routeIndex);
// 导航过程中将定位 SDK 回调获得到的定位点传给导航 SDK,设置回调频率为每秒 1 次 private TencentLocationListener mTencentLocationListener = new TencentLocationListener() {
@Override public void onLocationChanged(TencentLocation tencentLocation,
int error, String reason) {
if (error != TencentLocation.ERROR_OK || tencentLocation == null) { // 定位失败
return; }
mTencentWalkNaviManager.updateLocation(LocationUtils.convertToGpsLocation(tencentLocation), error, reason);
} @Override public void onStatusUpdate(String name, int status, String desc) { } };
// 结束导航 mTencentWalkNaviManager.stopNavi();
模拟导航方法:
//开启模拟导航,使用第 1 条路线进行导航
mTencentWalkNaviManager.startSimulateNavi(0);
22
//关闭模拟导航
mTencentWalkNaviManager.stopSimulateNavi() ;
3.3 骑行导航
3.3.1 导航初始化
在 layout文件中添加 RideNaviView:
<com.tencent.map.navi.ride.RideNaviView android:id="@+id/ride_navi_view" android:layout_width="match_parent" android:layout_height="match_parent"/>
地图生命周期控制。生命周期管理方法,用户需要在对应生命周期回调方
法中,主动调用。
@Override protected void onStart() {
mRideNaviView.onStart(); super.onStart();
} @Override protected void onRestart() {
mRideNaviView.onRestart(); super.onRestart();
} @Override protected void onResume() {
mRideNaviView.onResume(); super.onResume();
} @Override protected void onPause() {
mRideNaviView.onPause(); super.onPause();
} @Override protected void onStop() {
mRideNaviView.onStop(); super.onStop();
} @Override
23
protected void onDestroy() { mRideNaviView.onDestroy(); super.onDestroy();
}
初始化 TencentRideNaviManager 实例,推荐使用单例模式:
// 实例化导航管理器 mTencentRideNaviManager = new TencentRideNaviManager(this); // 设置回调监听 Private TencentRouteSearchCallback mTencentSearchCallback = new TencentRouteSearchCallback() {
@Override public void onRouteSearchFailure(int errorCode, String
errorMessage) { // 算路失败回调
} @Override public void onRouteSearchSuccess(ArrayList<RouteData> routes)
{ //最多三条路线数据:路线距离,路线点串,预估时间,路况数据等
} }; // 注册导航地图,接受导航事件 mTencentRideNaviManager.addTencentNaviListener(mRideNaviView);
3.3.2 骑行路径规划
发起路径规划代码如下
mTencentRideNaviManager.searchRoute(from,to, rideRouteSearchOptions, mTencentRouteSearchCallback);
其中参数说明如下表格所示,
参数 类型 必
填 说明
from NaviPoi 是 起点,一般使用当前
定位点赋值
latitude double 是 纬度
24
longitude double 是 经度
poiId String 否 兴趣点的 id
to NaviPoi 是 目的地。
rideRouteSearchOptions RideRouteSearchOptions 是 路线规划策略
mType int 是 骑行工具类型,0:自
行车,1:电动车
3.3.3 开启、结束导航
// 使用第 routeIndex 条路开启导航 mTencentRideNaviManager.startNavi(routeIndex);
// 导航过程中将定位 SDK 回调获得到的定位点传给导航 SDK,设置回调频率为每秒 1 次 private TencentLocationListener mTencentLocationListener = new TencentLocationListener() {
@Override public void onLocationChanged(TencentLocation tencentLocation,
int error, String reason) {
if (error != TencentLocation.ERROR_OK || tencentLocation == null) { // 定位失败
return; }
mTencentRideNaviManager.updateLocation(LocationUtils.convertToGpsLocation(tencentLocation), error, reason);
} @Override public void onStatusUpdate(String name, int status, String desc) { } };
// 结束导航 mTencentRideNaviManager.stopNavi();
25
模拟导航方法:
//开启模拟导航,使用第 1 条路线进行导航
mTencentRideNaviManager.startSimulateNavi(0); //关闭模拟导航
mTencentRideNaviManager.stopSimulateNavi() ;
4.功能概述
4.1 设置设备号
用户可在 APP启动时为导航设置设备唯一标识。出现问题时可向我们提供
该设备唯一标识和发生问题的时间段,以便我们帮助您排查问题。设置代码如
下:
TencentNavi.Config config = new TencentNavi.Config(); config.setDeviceId(“XXXXXX-XXXX-XXXX-XXXX-XXXXXX”); TencentNavi.init(this, config);
定位 SDK 设置代码如下:
TencentLocationRequest request = TencentLocationRequest.create(); Request.setUniqueId(“XXXXXX-XXXX-XXXX-XXXX-XXXXXX”);
4.2 驾车导航
4.2.1 自定义 UI
导航 SDK 提供了一些默认 UI组件,开发者可以根据需要控制这些元素的现
实和隐藏。
4.2.1.1 路口放大图
路口放大图默认开启,可使用如下方法控制:
// 设置不开启路口放大图功能
mTencentCarNaviManager.setEnlargedIntersectionEnabled(false)
4.2.1.2 车道线
车道线默认开启,可使用如下方法控制:
//设置不开启车道线功能
26
mTencentCarNaviManager.setGuidedLaneEnabled(false)
4.2.1.3 顶部导航面板
顶部导航面板默认开启,可使用如下方法控制:
// 设置不展示顶部导航面板
mCarNaviView.setNaviPanelEnabled(false);
4.2.1.4 更换起点、终点、途径点的图标
// 更换起点图标
mCarNaviView.configStartPointMarkerpresentation(fromMarkerBitmap, realFromMarkerBitmap);
// 更换终点图标
mCarNaviView.configEndPointMarkerpresentation(toMarkerBitmap,realToMarkerBitmap); // 更换途经点图标
mCarNaviView.configWayPointMarkerpresentation(wayMarkerBitmaps);
4.2.1.5 设置是否使用默认资源
SDK 中 assets 下的图片都可以自定义,如小车 marker电子眼 marker、车
道线箭头图片等。使用时需要将同名文件放到 module 下的 assets目录下。 然
后设置可替换默认资源:
mTencentCarNaviManager.setIsDefaultRes(false);
27
4.2.1.6 设置自车点位置
// 设置导航过程中 3d 模式下,车标位于地图宽高的比例,默认 x 坐标为 0.5 ,y 坐标为 0.75
mCarNaviView.setNaviFixingProportion3D(0.5,0.5); // 设置导航过程中 2d 模式下,车标位于地图宽高的比例,默认 x 坐标为 0.5 ,y 坐标为 0.75
mCarNaviView.setNaviFixingProportion2D(0.5,0.5);
4.2.1.7 设置导航日夜模式
默认是根据太阳升起落下时间自动切换模式,也可以设置一直使用日间模
式:
//设置导航一直为日间模式
mCarNaviView.setDayNightMode(DayNightMode.DAY_MODE);
4.2.1.8 设置导航牵引线
默认情况下开启导航牵引线,可在导航前和导航中设置牵引线颜色
// 控制牵引线显隐
mCarNaviView.setShowODLine(...); // 设置牵引线颜色 // param color ARGB 颜色值 mCarNaviView.setODLineColor(...)
4.2.1.9 设置导航模式
默认为 3D 车头向上模式,导航模式包括:
• 3D 最佳视野:MODE_3DCAR_TOWARDS_UP ,3D 车头朝上模式.该模式下,
车头始终保持指向屏幕上方,地图进行旋转并动态调整缩放级别.
• 2D 最佳视野:MODE_2DMAP_TOWARDS_NORTH , 2D 地图朝北模式.该模式
下,车头进行旋转,地图保持上北下南并动态调整缩放级别.
28
• 2D全览模式:MODE_OVERVIEW ,2D 路线全览模式.该模式下,车头进行旋
转,地图保持上北下南,同时会始终展示整条导航路线.
• 剩余全览模式:MODE_REMAINING_OVERVIEW,剩余路线全览模式。该模式
下,车头进行旋转,地图保持上北下南,同时会始终展示整条导航路线的
剩余部分。
设置方法如下,
// 设置 3D 车头朝上 mCarNaviView.setNaviMode(NaviMode.MODE_3DCAR_TOWARDS_UP);
回弹模式:导航态中,用户使用手势操作地图后进入回弹模式,手势结束
默认 5秒后切换回之前的导航模式,可通过如下代码设置回弹时间:
// 回弹时间改为 10s mCarNaviView.setBounceTime(10);
4.2.1.10 设置自定义地图样式
需要先在官网控制台配置个性化地图样式,导航可通过如下方法使用:
// 在官网配置的自定义样式列表中的顺序,从 1 开始。注意调用此方法,日夜模式失效 CarNaviView#setMapStyle(int)
29
4.2.1.11 其余导航控件
上图中红框部分是默认的 UI组件,包括光柱图,地图缩放控件,当前车
速,限速信息等,可以分别控制显隐,代码如下:
// 展示所有导航 UI控件 CarNaviInfoPanel carNaviInfoPanel = mCarNaviView.showNaviInfoPanel(); CarNaviInfoPanel.NaviInfoPanelConfig naviInfoPanelConfig = new CarNaviInfoPanel.NaviInfoPanleConfig();
// 隐藏底部退出、设置控件 naviInfoPanelConfig.setButtomPanelEnable(false);
// 隐藏主辅路切换按钮 naviInfoPanelConfig.setChangeRoadEnable(false);
// 隐藏当前车速 UI
naviInfoPanelConfig.setCurrentSpeedEnable(false);
// 隐藏限速、当前路名 UI
naviInfoPanelConfig.setLimitAndRoadEnable(false);
// 隐藏全览/非全览切换按钮 naviInfoPanelConfig.setShowFullViewEnable(false);
// 隐藏路况显隐按钮 naviInfoPanelConfig.setTrafficBarEnable(false);
// 隐藏智能定位 UI
naviInfoPanelConfig.setSmartLoEnable(false);
30
// 更新以上设置 carNaviInfoPanel.setNaviInfoPanelConfig(naviInfoPanelConfig);
接收导航退出按钮的点击事件:
carNaviInfoPanel.setOnNaviInfoListener(new carNaviInfoPanel.OnNaviInfoListener() { @Override
public void onBackClick() { } }
);
4.2.1.12 路况线拥堵气泡
默认是关闭拥堵气泡的
// 开启拥堵气泡
31
mCarNaviView.setTrafficBubbleEnabled(true);
4.2.1.13 路口比例尺缩放增强
默认情况下,导航中不会根据前方路况情况进行比例尺自动缩放,v5.2.5
中新增功能,已提供最佳视野
// 开启自动缩放比例尺
mCarNaviView.setAutoScaleEnabled(true);
4.2.2 导航回调事件
1)可实现 INaviView协议从而获取导航展示信息的回调事件:
private INaviView mINaviView = new INaviView() {
@Override public void onUpdateNavigationData(NavigationData
navigationData) { // 获取导航过程相关数据
} @Override public void onShowEnlargedIntersection(Bitmap bitmap) { //获取路口放大图资源
} @Override public void onHideEnlargedIntersection() { // 隐藏路口放大图
} @Override public void onShowGuidedLane(Bitmap bitmap) { // 获取车道线资源
} @Override public void onHideGuidedLane() { // 隐藏车道线
} @Override @deprecated public void onUpdateTraffic(String routId, int totalDistance,
int leftDistance, ArrayList<LatLng> points, ArrayList<TrafficItems> trafficItems, Boolean isCurrentRoute) {
// 获取更新导航线路路况的信息。
}
32
@Override public void onGpsRssiChanged(int rssi) { // GPS 信号强度变化. 0:无信号,1:信号弱,2:信号中,3:信号强 } @Override public void onSmartLocStart() {
// 智能定位的开启回调
} @Override public void onSmartLocEnd() {
// 智能定位的结束回调
} @Override public void onGpsRssiChanged(int rssi) {
// GPS信号变化回调,可用于绘制卫星信号 } @Override public void onGpsWeakNotify() {
// GPS信号弱回调 } @Override public void onGpsStrongNotify() {
// GPS信号恢复回调 } @Override public void onRouteDidChange(RouteData route,
ArrayList<TrafficItem> trafficItem) {
// 当前导航路线切换的回调 } @Override public void onDeleteBackupRoutes(ArrayList<String>
deletedRouteIDs) {
// 开启多路线功能时,经过分歧点时删除的备选路线 } @Override public void onAddBackupRoutes(ArrayList<RouteData> routes) {
// 开启多路线功能时,补充的伴随路线 } @Override public void onUpdateTraffic(RouteTrafficStatus
routeTrafficStatus) {
// 当前路线路况更新 } @Override
33
public void onUpdateBackupRoutesTraffic(ArrayLIst<RouteTrafficStatus> routeTraffics) {
// 备选路线路况更新 }
}
// 添加事件监听
mTencentCarNaviManager.addNaviView(mINaviView); // 适时移除事件监听
mTencentCarNaviManager.removeNaviView(mINaviView);
其中 NavigationData 包含:当前道路路名、当前速度 、当前道路剩余距离、
总剩余距离、总剩余时间、当前道路限速、下一道路路名、前方转向箭头图
片、途经点信息等。
2)获得导航状态事件回调:
private TencentNaviCallback mTencentNaviCallback = new TencentNaviCallback() {
@Override @deprecated public int onVoiceBroadcast(NaviTts tts) {
// 语音播报文案 return 1;
} @Override public void onUpdateAttachedLocation(AttachedLocation
location) {
// 导航过程中定位点的信息回调,其中包含原始定位和吸附定位 } @Override public void onArrivedDestination() {
// 即将到达目的地 } @Override
public void onStartNavi() { // 开启导航 }
34
@Override public void onStopNavi() { // 结束导航 } @Override public void onOffRoute() { // 发生偏航 } @Override public void onRecalculateRouteStarted(int type) { // 偏航发起重新算路,开发者无需处理此信息 } @Override public void onRecalculateRouteCanceled() {
// 偏航重新算路请求取消,可能是由于误偏航之后马上纠正,从而取消请求 } @Override public void onRecalculateRouteSuccess(int type,
ArrayList<RouteData> routeDataList) { //偏航重新路线规划成功回调。注意:当 RouteData 中的 getDataStatus 方法返
回 1 时,表示定位处在没有道路的地方,此时不会提供路线数据,直到定位点回到有路的地方;如果有路线数据,导航默认选择了第一条路进行导航
}
@Override public void onRecalculateRouteFailure(int type, int errorCode,
String errorMessage) { // 偏航重新路线规划失败,开发者无需处理此信息
}
@Override public void onPassedWayPoint(int passPointIndex) { // 达到第 passPointIndex个途经点回调 } @Override public void onUpdateRoadType(int roadType) { // 主辅路切换提示: 0 为无提示,1 为在桥上,2为在桥下,3 为在主路,4为在
辅路,5为在对面,6为桥下主路,7为桥下辅路 }
3)导航适配接口 TencentNaviAdapter:
@Override
35
public void getVoiceBroadState(NaviTts tts) { // 获取语音播报的结果状态,默认 0
Return 0; }
@Override public ArrayList<String>
getPickFollowedRoutes(ArrayList<RouteData> routes) { // 挑选备选路线的方案 }
4.2.3 一键上报
导航使用者遇到导航问题时可以进行问题反馈上报,包括:拥堵、施工、封
路、事故、管制、语音反馈。
。
// 设置城市编码:
UploadPercentor.setAdCode("城市编码"); // 设置 apikey
UploadPercentor.setApiKey("xxxxxx-xxxx-xxxx-xxxxxx"); // 设置订单 id
36
UploadPercentor.setOrderId("xxx"); // 设置用户 id
UploadPercentor.setUserId("xxx"); // 可能造成语音冲突,可关闭语音反馈功能 UploadPercentor.setHideVioce(); 以上配置必须设置,否则会导致上传失败。开发者需要自己创建上报按钮,点击上报按钮调用如下方法:
OneKeyReportManager.getInstance().showOneKeyReportDialog(mContext);
4.2.4 伴随路线
可开启导航过程中的伴随路线
用户可以根据需求,开启和关闭伴随路线。当用户开启伴随路线后,可以
挑选,切换,删除伴随路线的显示。
A.开启备选路线
mTencentCarNaviManager.setMulteRoutes(true); // 接受相关事件回调 mCarNaviView.setNaviMapActionCallback(mTencentCarNaviManager);
B.从主路线切换到备选路线
/**
37
* 切换⾄备选路线。 *
* @param routeID 备选路线 id
*
* @return 结果状态码: * <ul>
* <li> 0 : 切换成功 * <li> 1 : 此路线已经是导航主路线 * <li> 2 : 没找到对应的路线 * <li> 3 : 当前非导航状态,无法切换 * </ul> * @since 5.2.6 */ public int changeToFollowedRoute(String routeID)
C.导航中删除某条备选路线
/**
* 导航过程中删除某备选路线。 *
* @param routeID 备选路线 id
*
* @return 结果状态码: * <ul>
* <li> 0 : 删除成功 * <li> 1 : 导航主路线不支持删除 * <li> 2 : 没找到对应的路线 * <li> 3 : 当前非导航状态,无法切换 * </ul> * @since 5.2.6 */ public int deleteFollowedRoute(String routeID)
D. 开启多路线后,在 INaviView 接口内获取导航补充的备选路线和经过分
歧点时删除掉的备选路线。
/**
* 开启多路线功能时,经过分歧点时删除的备选路线。 *
* @param deletedRouteIDs 删除掉的路线 ID数组
38
* @since 5.2.6 */ void onDeleteBackupRoutes(ArrayList<String> deletedRouteIDs); /**
* 开启多路线功能时,补充的伴随路线。 *
* @param routes 补充的路线数组 * @since 5.2.6 */ void onAddBackupRoutes(ArrayList<RouteData> routes);
E.挑选需要显示的备选路线,通过 TencentNaviAdapter回调给导航 SDK,
默认全部补充的备选路线。
/**
* 挑选备选路线的回调。 *
* @param routes 备选路线信息 *
* @return 挑选需要展示的备选路线 id数组 */ public ArrayList<String>
getPickFollowedRoutes(ArrayList<RouteData> routes)
F.点击备选路线后,在 INaviView 内接收切换路线回调:
/**
* 当前导航路线切换的回调。 *
* @param route 切换到的导航路线数据 * @param trafficItems 当前路线的路况数据 * @since 5.2.6 */ void onRouteDidChange(RouteData route,
ArrayList<TrafficItem> trafficItems);
G.导航过程中,在 INaviView中分别接收主路线和备选路线的路况刷新数
据:
/**
* 当前路线路况更新。 *
* @param routeTrafficStatus 路线路况更新数据
39
* @since 5.2.6 */ void onUpdateTraffic(RouteTrafficStatus
routeTrafficStatus); /**
* 备选路线路况更新。 *
* @param routeTrafficStatusList 路线路况更新数据 * @since 5.2.6 */ void
onUpdateBackupRoutesTraffic(ArrayList<RouteTrafficStatus> routeTrafficStatusList);
4.2.5 自动灌点
以前导航开启之后需要每秒调用如下方法给导航 SDK 设置定位点,以驱动
导航工作:
mTencentCarNaviManager.updateLocation(location, error, reason);
自动灌点的功能是导航 SDK耦合腾讯定位 SDK,然后导航 SDK 自己去自动获
得定位点,开发者不需要调用上述方法给导航 SDK 设置定位点了。
开启自动灌点功能代码如下,
// 开启自动灌点开关 mTencentCarNaviManager.setUseExtraLocationData (false); // 定位管理类关联上下文 TNKLocationManager.getInstance().setContext(getApplicationContext());
开发者需要使用导航 SDK 的定位管理类来获取定位点信息,无需直接调用
定位 SDK 的 TencentLocationManager:
// 添加定位数据回调,如果此时未开启定位 SDK,会自动开启定位 SDK TNKLocationManager.getInstance().addLocationListener(new ITNKLocationCallBack() {
@Override public void requestLocationUpdatesResult(int errorCode) { } @Override
40
public void onLocationChanged(TencentLocation tencentLocation, int errorcode, String reason) {
} }); // 移除定位数据回调监听 TNKLocationManager.getInstance().removeLicationListener(...);
4.2.6 智能定位
智能定位主要是在驾车过程中 GPS长时间丢失后,利用网络定位结果+导航
规划路径来进行定位/导航。使用 4.2.5 自动灌点功能后,智能定位自动开启。
4.2.7 惯性导航
隧道场景下 GPS 信号存在大量丢失或者缺损的情况,导航 SDK 针对于此场
景进行了特殊补充,其会在隧道内推导一系列定位点,沿规划的路线进行导
航,直至出隧道恢复 GPS 信号,使导航效果更加平滑顺畅。需要注意的是,惯
性导航只是针对于隧道场景下进行的特殊处理。
/**
* 更新吸附点回调 */ void onUpdateAttachedLocation(AttachedLocation location) {
// 是否为惯性导航推导出的点、并非真实定位点 // location.isMockGPS() }
4.3 步行导航
4.3.1 自定义 UI
导航 SDK 提供了一些默认 UI组件,开发者可以根据需要控制这些元素的现
实和隐藏。
41
4.3.1.1 顶部导航面板
顶部导航面板默认开启,可使用如下方法控制:
// 设置不展示顶部导航面板
mWalkNaviView.setNaviPanelEnabled(false);
4.3.1.2 更换起点、终点的图标
// 更换起点图标
mWalkNaviView.configStartPointMarkerpresentation(fromMarkerBitmap, realFromMarkerBitmap);
// 更换终点图标
mWalkNaviView.configEndPointMarkerpresentation(toMarkerBitmap,realToMarkerBitmap);
4.3.1.3 设置是否使用默认资源
SDK 中 assets 下的图片都可以自定义,如小车 marker电子眼 marker、车
道线箭头图片等。使用时需要将同名文件放到 module 下的 assets目录下。 然
后设置可替换默认资源:
mTencentWalkNaviManager.setIsDefaultRes(false);
4.3.1.4 设置自车点位置
// 设置导航过程中 3d 模式下,车标位于地图宽高的比例,默认 x 坐标为 0.5 ,y 坐标为 0.75
mWalkNaviView.setNaviFixingProportion3D(0.5,0.5); // 设置导航过程中 2d 模式下,车标位于地图宽高的比例,默认 x 坐标为 0.5 ,y 坐标为 0.75
mWalkNaviView.setNaviFixingProportion2D(0.5,0.5);
4.3.1.5设置导航模式
默认为 3D 车头向上模式,导航模式包括:
• 3D 最佳视野:MODE_3DCAR_TOWARDS_UP ,3D 车头朝上模式.该模式下,
车头始终保持指向屏幕上方,地图进行旋转并动态调整缩放级别.
42
• 2D 最佳视野:MODE_2DMAP_TOWARDS_NORTH , 2D 地图朝北模式.该模式
下,车头进行旋转,地图保持上北下南并动态调整缩放级别.
• 2D全览模式:MODE_OVERVIEW ,2D 路线全览模式.该模式下,车头进行旋
转,地图保持上北下南,同时会始终展示整条导航路线.
• 剩余全览模式:MODE_REMAINING_OVERVIEW,剩余路线全览模式。该模式
下,车头进行旋转,地图保持上北下南,同时会始终展示整条导航路线的
剩余部分。
设置方法如下,
// 设置 3D 车头朝上 mWalkNaviView.setNaviMode(NaviMode.MODE_3DCAR_TOWARDS_UP);
回弹模式:导航态中,用户使用手势操作地图后进入回弹模式,手势结束
默认 5秒后切换回之前的导航模式,可通过如下代码设置回弹时间:
// 回弹时间改为 10s mWalkNaviView.setBounceTime(10);
43
4.3.1.5 其余导航控件
上图中红框部分是默认的 UI组件,包括底部导航栏、全览模式按钮、缩放
按钮,可以分别控制显隐,代码如下:
// 展示所有导航 UI控件 CarNaviInfoPanel carNaviInfoPanel = mWalkNaviView.showNaviInfoPanel(); CarNaviInfoPanel.NaviInfoPanelConfig naviInfoPanelConfig = new CarNaviInfoPanel.NaviInfoPanleConfig();
// 隐藏底部导航栏控件 naviInfoPanelConfig.setButtomPanelEnable(false);
// 隐藏全览/非全览切换按钮 naviInfoPanelConfig.setShowFullViewEnable(false);
// 更新以上设置 carNaviInfoPanel.setNaviInfoPanelConfig(naviInfoPanelConfig);
44
接收导航退出按钮的点击事件:
carNaviInfoPanel.setOnNaviInfoListener(new carNaviInfoPanel.OnNaviInfoListener() { @Override
public void onBackClick() { } }
);
4.3.2 导航回调事件
这是步行导航事件的回调 TencentWalkNaviListener 。
public interface TencentWalkNaviListener extends TencentNaviListener { /**
* 路线重新规划成功 *
* @param routeDataList 路线数组 */ void onRecalculateRouteSuccess(ArrayList<RouteData> routeDataList); /**
* 传感器监听手机朝向变化 *
* @param direction 手机方向 */ void onDirectionUpdateBySensor(float direction); }
这是导航事件回调的基类 TencentNaviListener。
public interface TencentNaviListener { /**
* 开启导航 */ void onStartNavi(); /**
* 关闭导航 */ void onStopNavi(); /**
45
* 发生偏航 */ void onOffRoute(); /**
* tts播报。开发者返回 0表示该条语音文本没有被成功播报,返回 1则表示播报成功。 * 如果用户返回 0,则导航 SDK认为该条语音没有被成功播报,会在合适的时机再次返回该条播报内容。 */ int onVoiceBroadcast(NaviTts tts); /**
* 到达目的地回调. 如果尚未结束导航, 这个方法可能执行多次. */ void onArrivedDestination(); /**
* 更新吸附点回调 *
* @param location 参见{@link com.tencent.map.navi.data.AttachedLocation} */ void onUpdateAttachedLocation(AttachedLocation location); /**
* 通知 GPS信号变化.可用于绘制卫星信号. * 0:无信号,1:信号弱,2:信号中,3:信号强 *
* @param rssi GPS信号强度 */ void onGpsRssiChanged(int rssi); /**
* 更新导航面板所需数据,包括路名,距离信息以及时间信息等. *
* @param data 导航面板数据 */ void onUpdateNavigationData(NavigationData data); /**
* gps信号弱回调。是通过一段时间内的定位信息判定得来 */ void onGpsWeakNotify();
46
/**
* gps恢复回调。是通过一段时间内的定位信息判定得来 */ void onGpsStrongNotify(); /**
* GPS定位结果有效/无效 *
* @param isGpsValid GPS定位结果有效/无效 */ void onGpsStatusChanged(boolean isGpsValid); /**
* 更新当前路线 * @param routeData 当前路线 */ void onUpdateCurrentRoute(RouteData routeData); /**
* 改变资源 */ void onChangeRes(boolean isDefaultRes); }
4.4骑行导航
4.4.1 自定义 UI
导航 SDK 提供了一些默认 UI组件,开发者可以根据需要控制这些元素的现
实和隐藏。
4.4.1.1 顶部导航面板
顶部导航面板默认开启,可使用如下方法控制:
// 设置不展示顶部导航面板
mRideNaviView.setNaviPanelEnabled(false);
4.4.1.2 更换起点、终点的图标
// 更换起点图标
mRideNaviView.configStartPointMarkerpresentation(fromMarkerBitmap, realFromMarkerBitmap);
47
// 更换终点图标
mRideNaviView.configEndPointMarkerpresentation(toMarkerBitmap,realToMarkerBitmap);
4.4.1.3 设置是否使用默认资源
SDK 中 assets 下的图片都可以自定义,如小车 marker电子眼 marker、车
道线箭头图片等。使用时需要将同名文件放到 module 下的 assets目录下。 然
后设置可替换默认资源:
mTencentRideNaviManager.setIsDefaultRes(false);
4.4.1.4 设置自车点位置
// 设置导航过程中 3d 模式下,车标位于地图宽高的比例,默认 x 坐标为 0.5 ,y 坐标为 0.75
mRideNaviView.setNaviFixingProportion3D(0.5,0.5); // 设置导航过程中 2d 模式下,车标位于地图宽高的比例,默认 x 坐标为 0.5 ,y 坐标为 0.75
mRideNaviView.setNaviFixingProportion2D(0.5,0.5);
4.4.1.5设置导航模式
默认为 3D 车头向上模式,导航模式包括:
• 3D 最佳视野:MODE_3DCAR_TOWARDS_UP ,3D 车头朝上模式.该模式下,
车头始终保持指向屏幕上方,地图进行旋转并动态调整缩放级别.
• 2D 最佳视野:MODE_2DMAP_TOWARDS_NORTH , 2D 地图朝北模式.该模式
下,车头进行旋转,地图保持上北下南并动态调整缩放级别.
• 2D全览模式:MODE_OVERVIEW ,2D 路线全览模式.该模式下,车头进行旋
转,地图保持上北下南,同时会始终展示整条导航路线.
• 剩余全览模式:MODE_REMAINING_OVERVIEW,剩余路线全览模式。该模式
下,车头进行旋转,地图保持上北下南,同时会始终展示整条导航路线的
剩余部分。
48
设置方法如下,
// 设置 3D 车头朝上 mRideNaviView.setNaviMode(NaviMode.MODE_3DCAR_TOWARDS_UP);
回弹模式:导航态中,用户使用手势操作地图后进入回弹模式,手势结束
默认 5秒后切换回之前的导航模式,可通过如下代码设置回弹时间:
// 回弹时间改为 10s mRideNaviView.setBounceTime(10);
4.4.1.6 其余导航控件
49
上图中红框部分是默认的 UI组件,包括导航栏,全览模式按钮,缩放级别
控制按钮,当前速度等,分别控制显隐,代码如下:
// 展示所有导航 UI控件 CarNaviInfoPanel carNaviInfoPanel = mRideNaviView.showNaviInfoPanel(); CarNaviInfoPanel.NaviInfoPanelConfig naviInfoPanelConfig = new CarNaviInfoPanel.NaviInfoPanleConfig();
// 隐藏底部导航栏控件 naviInfoPanelConfig.setButtomPanelEnable(false);
// 隐藏全览/非全览切换按钮 naviInfoPanelConfig.setShowFullViewEnable(false);
// 隐藏当前车速控件 naviInfoPanelConfig.setCurrentSpeedEnable(false);
// 更新以上设置 carNaviInfoPanel.setNaviInfoPanelConfig(naviInfoPanelConfig);
接收导航退出按钮的点击事件:
carNaviInfoPanel.setOnNaviInfoListener(new carNaviInfoPanel.OnNaviInfoListener() { @Override
public void onBackClick() { } }
);
4.4.2 导航回调事件
这是步行导航事件的回调 TencentRideNaviListener。
public interface TencentRideNaviListener extends TencentNaviListener { /**
* 路线重新规划成功 *
* @param routeDataList 路线数组 */ void onRecalculateRouteSuccess(ArrayList<RouteData> routeDataList);
50
/**
* 传感器监听手机朝向变化 *
* @param direction 手机方向 */ void onDirectionUpdateBySensor(float direction); }
这是导航事件回调的基类 TencentNaviListener。
public interface TencentNaviListener { /**
* 开启导航 */ void onStartNavi(); /**
* 关闭导航 */ void onStopNavi(); /**
* 发生偏航 */ void onOffRoute(); /**
* tts播报。开发者返回 0表示该条语音文本没有被成功播报,返回 1则表示播报成功。 * 如果用户返回 0,则导航 SDK认为该条语音没有被成功播报,会在合适的时机再次返回该条播报内容。 */ int onVoiceBroadcast(NaviTts tts); /**
* 到达目的地回调. 如果尚未结束导航, 这个方法可能执行多次. */ void onArrivedDestination(); /**
* 更新吸附点回调 *
* @param location 参见{@link com.tencent.map.navi.data.AttachedLocation} */ void onUpdateAttachedLocation(AttachedLocation location);
51
/**
* 通知 GPS信号变化.可用于绘制卫星信号. * 0:无信号,1:信号弱,2:信号中,3:信号强 *
* @param rssi GPS信号强度 */ void onGpsRssiChanged(int rssi); /**
* 更新导航面板所需数据,包括路名,距离信息以及时间信息等. *
* @param data 导航面板数据 */ void onUpdateNavigationData(NavigationData data); /**
* gps信号弱回调。是通过一段时间内的定位信息判定得来 */ void onGpsWeakNotify(); /**
* gps恢复回调。是通过一段时间内的定位信息判定得来 */ void onGpsStrongNotify(); /**
* GPS定位结果有效/无效 *
* @param isGpsValid GPS定位结果有效/无效 */ void onGpsStatusChanged(boolean isGpsValid); /**
* 更新当前路线 * @param routeData 当前路线 */ void onUpdateCurrentRoute(RouteData routeData); /**
* 改变资源 */ void onChangeRes(boolean isDefaultRes); }
52
5.网约车场景
5.1 快车业务
快车业务最简调用导航 SDK、定位 SDK、地图 SDK、司乘同显 SDK 时序图如
下所示,
路线规划策略类 CarRouteSearchOptions 在接送驾场景建议使用不同的策
略。
1) 接驾路线规划建议策略:
navScene=1&avoidToll=true&avoidHighway=false&avoidCongestion=true
2) 送驾路线规划建议策略:
ᛯ6'. ਧ֖6'. .'ด6ݶԙݪ
����Ӥಸݪਧ֖מ௳�ၝܔᔮᕹጱᥝמ௳�
ᒒݪ
����ྯᑁࢧ᧣ਧ֖מ௳
����ളکᦈ҅ܔᬰᤈളḩ᪠ᕚᥢښ
.'ਧ֖6ސ҅ܔލ����
����ᬬࢧᕮຎ̶ୌᦓݪᒒीے०ᨳ᯿ᦶೲᰵ
.'6ࢶ
����ᕲګ᪠ᕚ̵PDUNHUᒵ8,زᔰ
����ސᛯ҅ᬰᤈളḩ
௳מᴫਧ֖ޕ̵௳מىᛯፘ᧣ࢧ����
����Ӥಸਧ֖מ௳̵᪠ᕚמ௳
�ᬡളḩᅩ҅؊ྊᛯک����
����ԙਮӤ҅ᬰᤈᭆḩ᪠ᕚᥢښ�
����ᬬࢧᕮຎ̶ୌᦓݪᒒीے०ᨳ᯿ᦶೲᰵ
����ᕲګ᪠ᕚ̵PDUNHUᒵ8,زᔰ
����ԙਮ᪠҅ސᛯ҅ᬰᤈᭆḩ
௳מᴫਧ֖ޕ̵௳מىᛯፘ᧣ࢧ����
����Ӥಸਧ֖מ௳̵᪠ᕚמ௳
�ᬡᭆḩᅩ҅؊ྊᛯک����
����ත҅؊ྊਧ֖6'.
53
navScene=2&avoidToll=false&avoidHighway=false&avoidCongestion=true
路线规划最多返回 3条路线,CarRouteSearchOptions还提供方法对 3条路
线重新排序: // 0:默认; 1:距离优先; 2:价格优先 mSearchOptions.setRouteTraticeType(2); // 设置单价:每公里 2.6 元、每分钟 0.6 元 mSearchOptions.setPrice(2.5,0.6);