更新记录
1.0.0(2026-09-18)
下载此版本
- 初始版本,支持 Android 平台(Android 6.0 / API 23 及以上)
- 支持 SDK 初始化(内置隐私合规处理 + API Key)与销毁
- 支持路线规划:驾车 / 货车 / 骑行 / 步行 / 摩托车 / 骑行电动车,算路结果自动返回
- 支持途经点(最多 16 个)、算路策略、车辆信息(货车 / 摩托车 / 尾号限行)
- 支持高德导航组件页(路线规划页 / 导航页),语音、播报模式、车头朝向、比例尺等均作为参数传入
- 支持实时导航 / 模拟导航的启动与停止
- 支持 TTS 语音播报:内置语音开关、播报模式、自定义文字播报、停止播报、播报状态查询
- 支持导航实时数据回调:导航信息、定位、车道、路口放大图、电子眼、服务区、交通事件、平行路
- 原生混编层通过反射 + 动态代理实现,兼容高德导航 SDK 版本差异,SDK 依赖固定为
com.amap.api:navi-3dmap:10.0.800_3dmap10.0.800
平台兼容性
uni-app(4.72)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
× |
× |
√ |
√ |
5.0 |
× |
× |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| × |
× |
× |
× |
× |
× |
× |
× |
× |
- |
× |
× |
uni-app x(4.72)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| × |
× |
- |
× |
× |
× |
zy-amap-navi 高德导航插件
高德导航 UTS 插件(Android),封装高德导航 SDK,提供 路线规划(算路结果自动返回)、
高德导航组件页、实时/模拟导航、TTS 语音播报 与 导航实时数据回调。
导航 UI 由高德官方导航组件页提供(路线规划页 / 导航页),接入成本低、与高德地图 App 效果一致。
功能特性
- ✅ SDK 初始化(内置隐私合规处理 + API Key)与销毁
- ✅ 路线规划:驾车 / 货车 / 骑行 / 步行 / 摩托车 / 骑行电动车,算路结果自动返回
- ✅ 途经点(最多 16 个)、算路策略、车辆信息(货车 / 摩托车 / 尾号限行)
- ✅ 高德导航组件页(路线规划页 / 导航页),语音、播报模式、视角等全部作为参数传入
- ✅ 实时导航 / 模拟导航的启动与停止
- ✅ TTS 语音播报:内置语音开关、播报模式(简洁 / 详细 / 静音)、自定义文字播报、停止播报
- ✅ 导航实时数据回调:导航信息(剩余距离/时间/当前道路/转向图标)、定位、车道、路口放大图、电子眼、服务区、交通事件、平行路
支持平台
| 平台 |
最低版本 |
说明 |
| Android |
Android 6.0 (API 23) |
依赖高德导航 SDK(com.amap.api:navi-3dmap) |
| iOS |
- |
暂不支持 |
| Harmony |
- |
暂不支持 |
依赖与环境
| 项 |
要求 |
| HBuilderX |
4.25 及以上(UTS 原生混编) |
| 高德导航 SDK |
com.amap.api:navi-3dmap:10.0.800_3dmap10.0.800(已写入 utssdk/app-android/config.json) |
| 运行环境 |
含三方 SDK,必须提交云端打包生成自定义基座 后才能真机运行 |
安装
在 HBuilderX 插件市场搜索 zy-amap-navi 安装,或手动将插件目录复制到项目的 uni_modules/ 下。
配置说明
1. 配置高德 Key(二选一)
方式一:AndroidManifest 配置(推荐)
在项目 nativeResources/android/AndroidManifest.xml 的 <application> 节点内添加:
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="您申请的高德 Key" />
方式二:调用时传入
initModule({ apiKey: '您申请的高德 Key' })
Key 需与打包证书的 SHA1、包名在高德开放平台绑定,否则算路会返回 Key 非法错误码。
2. 权限配置
插件已在 utssdk/app-android/AndroidManifest.xml 中声明导航所需权限,无需手动配置:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<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_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
实时导航需要 定位权限,请在应用启动时通过 uni.authorize 或 Android 运行时权限申请获得用户授权。
3. 隐私合规
高德导航 SDK 自 8.1.0 起强制要求隐私合规,插件已在 initModule 内部按官方要求先调用
updatePrivacyShow / updatePrivacyAgree,再实例化 AMapNavi,无需额外处理。
privacyAgree 传 false 时插件会直接初始化失败(错误码 9080002);
- 请确保用户已阅读并同意您的隐私政策后再调用
initModule。
快速开始
import { initModule, calculateRoute, openNaviPage } from '@/uni_modules/zy-amap-navi'
// 1. 初始化(唯一的前置步骤)
initModule({
privacyAgree: true,
parallelRoad: true,
onEvent: (e) => console.log('导航事件', e.event, e.data),
success: () => {
// 2. 算路:结果自动返回
calculateRoute({
mode: 'drive',
start: { latitude: 39.993308, longitude: 116.473199 },
end: { latitude: 39.917834, longitude: 116.397036 },
strategy: 10,
success: (result) => {
console.log(`共 ${result.routeCount} 条路线,主路线 ${result.distance} 米 / ${result.time} 秒`)
// 3. 打开高德导航组件页,语音与车头朝向等作为参数传入
openNaviPage({
mode: 'drive',
end: { latitude: 39.917834, longitude: 116.397036 },
useInnerVoice: true, // 内置语音播报
broadcastMode: 2, // 1 简洁 / 2 详细 / 3 静音
carDirectionMode: 2, // 1 正北向上 / 2 车头向上
scaleAutoChange: true // 比例尺智能缩放
})
},
fail: (err) => console.error('算路失败', err.errCode, err.errMsg)
})
}
})
API 说明
1. initModule - 初始化 SDK
initModule(options: NaviInitOptions): void
| 字段 |
类型 |
必填 |
说明 |
| apiKey |
string |
否 |
高德 Key,不传时读取 AndroidManifest 中的 com.amap.api.v2.apikey |
| privacyShow |
boolean |
否 |
隐私政策是否已弹窗展示,默认 true |
| privacyContains |
boolean |
否 |
隐私政策是否包含高德开放平台隐私权政策,默认 true |
| privacyAgree |
boolean |
否 |
用户是否已同意隐私政策,默认 true;传 false 会初始化失败 |
| parallelRoad |
boolean |
否 |
是否开启平行路检测,默认 true |
| onEvent |
function |
否 |
持续事件回调,详见「事件列表」 |
| success / fail / complete |
function |
否 |
结果回调 |
2. calculateRoute - 路线规划(结果自动返回)
calculateRoute(options: NaviCalculateRouteOptions): void
| 字段 |
类型 |
必填 |
说明 |
| mode |
string |
否 |
出行方式,默认 drive,取值见「出行方式」 |
| start |
NaviPoi |
否 |
起点,不传则使用「我的位置」 |
| end |
NaviPoi |
是 |
终点 |
| wayPoints |
NaviPoi[] |
否 |
途经点,最多 16 个 |
| strategy |
number |
否 |
算路策略,默认 10(躲避拥堵、路程较短、时间较短) |
| carInfo |
NaviCarInfo |
否 |
车辆信息,货车 / 摩托车必传 |
| onEvent |
function |
否 |
持续事件回调 |
| success |
function |
否 |
算路成功回调,直接返回 NaviRouteResult |
| fail / complete |
function |
否 |
结果回调 |
success 返回的 NaviRouteResult:
| 字段 |
类型 |
说明 |
| routeId |
number |
主路线 id |
| routeCount |
number |
算出的路线条数 |
| distance |
number |
主路线长度(米) |
| time |
number |
主路线预计耗时(秒) |
| tollCost |
number |
过路费(元) |
| trafficLightCount |
number |
红绿灯个数 |
| labels |
string[] |
主路线标签(如「躲避拥堵」) |
| routes |
NaviRouteSummary[] |
各条路线摘要(字段同上,无 routeCount / routes) |
3. startNavi - 开始导航(语音作为参数)
startNavi(options?: NaviStartNaviOptions): void
| 字段 |
类型 |
必填 |
说明 |
| naviType |
string |
否 |
gps 实时导航(默认)/ emulator 模拟导航 |
| useInnerVoice |
boolean |
否 |
是否使用高德内置语音播报,传了才生效 |
| broadcastMode |
number |
否 |
播报模式:1 简洁 / 2 详细 / 3 静音,传了才生效 |
| onEvent |
function |
否 |
持续事件回调 |
| success / fail / complete |
function |
否 |
结果回调 |
需先算路成功;未算路时高德 SDK 会返回启动失败。实时导航会自动开启卫星定位。
4. stopNavi - 停止导航
stopNavi(options?: NaviSimpleOptions): void
5. openNaviPage - 打开高德导航组件页
openNaviPage(options: NaviPageOptions): void
| 字段 |
类型 |
必填 |
说明 |
| mode |
string |
否 |
出行方式,默认 drive |
| pageType |
string |
否 |
route 路线规划页(默认)/ navi 导航页 |
| start |
NaviPoi |
否 |
起点,不传则使用「我的位置」 |
| end |
NaviPoi |
是 |
终点 |
| wayPoints |
NaviPoi[] |
否 |
途经点,导航组件最多支持 3 个 |
| strategy |
number |
否 |
算路策略,默认 10,仅支持多路线策略 |
| useInnerVoice |
boolean |
否 |
是否使用内部语音播报,默认 true |
| broadcastMode |
number |
否 |
播报模式:1 简洁 / 2 详细 / 3 静音 |
| carDirectionMode |
number |
否 |
导航视角:1 正北向上 / 2 车头向上 |
| scaleAutoChange |
boolean |
否 |
比例尺智能缩放 |
| carInfo |
NaviCarInfo |
否 |
车辆信息(货车导航、尾号限行) |
| calculateRouteWhenPresent |
boolean |
否 |
启动组件时是否算路,默认 true |
| destroyWhenExit |
boolean |
否 |
退出组件时是否停止并销毁导航,默认 true |
| onEvent |
function |
否 |
持续事件回调 |
| success / fail / complete |
function |
否 |
结果回调 |
6. exitNaviPage - 退出导航组件页
exitNaviPage(options?: NaviSimpleOptions): void
7. playTTS - 播放自定义语音
playTTS(options: NaviPlayTtsOptions): void
| 字段 |
类型 |
必填 |
说明 |
| text |
string |
是 |
播报文字 |
| forcePlay |
boolean |
否 |
是否强制播放(等待导航语音播完再播,可能丢失关键引导信息) |
| success / fail / complete |
function |
否 |
结果回调 |
8. stopSpeak - 停止语音播报
stopSpeak(options?: NaviSimpleOptions): void
9. isTtsPlaying - 是否正在播报(同步)
isTtsPlaying(): boolean
10. destroyModule / isInit
destroyModule(options?: NaviSimpleOptions): void // 销毁导航 SDK,释放资源
isInit(): boolean // 是否已初始化(同步)
数据模型
NaviPoi(起终点 / 途经点)
| 字段 |
类型 |
说明 |
| latitude / longitude |
number |
经纬度,高德坐标系(GCJ-02) |
| name |
string |
名称,可选,仅用于显示 |
| poiId |
string |
高德 POI id,可选,强烈建议传入,命中时执行 POI 精确检索 |
| direction |
number |
起点角度算路,设置后不能使用 poiId |
NaviCarInfo(车辆信息)
| 字段 |
类型 |
说明 |
| carType |
string |
"1"/"3"/"5" 货车,"11" 摩托车 |
| plateNumber |
string |
车牌号,如 京C123456 |
| plateColor |
string |
车牌颜色 |
| restriction |
string |
限行标识 |
| vehicleLength / vehicleWidth / vehicleHeight |
string |
车长 / 车宽 / 车高(米) |
| vehicleLoad / vehicleWeight |
string |
核定载重 / 货车重量(吨) |
| vehicleAxis / vehicleSize |
string |
轴数 / 货车尺寸类型 |
| vehicleLoadSwitch |
boolean |
货车重量是否参与算路 |
| motorcycleCc |
number |
摩托车排量(cc) |
出行方式(mode)
| 值 |
说明 |
备注 |
| drive |
驾车 |
默认 |
| truck |
货车 |
需在算路前传 carInfo;收费接口,需高德商务授权 |
| ride |
骑行 |
- |
| walk |
步行 |
- |
| motorcycle |
摩托车 |
SDK 通过 carInfo.carType = "11" 区分;收费接口 |
| electric |
骑行电动车 |
收费接口 |
事件列表(onEvent)
| event |
说明 |
| initSuccess / initFail |
SDK 初始化结果 |
| destroy |
插件已销毁 |
| calculateRouteSuccess / calculateRouteFailure |
算路结果(success / fail 也会自动回调) |
| startNavi / stopNavi |
导航开始 / 结束(data.type:1 实时 2 模拟) |
| arriveDestination |
到达目的地 |
| arrivedWayPoint |
到达途经点(data.wayPointIndex) |
| endEmulatorNavi |
模拟导航结束 |
| rerouteSuccess |
偏航 / 拥堵 / 策略变更触发的重算 |
| naviInfoUpdate |
导航信息:currentRoadName、nextRoadName、pathRetainDistance、pathRetainTime、curStepRetainDistance、iconType、curSpeed、naviAction |
| gpsLocationUpdate |
定位信息:latitude、longitude、bearing、speed、accuracy、time、matchedRoute 等 |
| gpsWeak / gpsOpenStatus / gpsSignalStrength |
GPS 信号弱 / 开关状态 / 信号强度 |
| trafficStatusUpdate |
实时路况更新 |
| showLaneInfo / hideLaneInfo |
车道信息 |
| showCross / hideCross |
路口实景放大图 |
| showModeCross / hideModeCross |
路口模型放大图 |
| updateCameraInfo / updateIntervalCameraInfo |
电子眼 / 区间测速 |
| serviceAreaUpdate |
服务区 / 收费站 |
| routeNotify |
交通事件(拥堵、限行、封闭等) |
| parallelRoadStatus |
平行路状态 |
| playRing |
导航提示音(data.type) |
| getNavigationText |
语音播报文本(配合第三方 TTS 使用) |
| openPageSuccess / openPageFail |
导航组件页打开结果 |
| naviPageExit |
退出导航组件页(data.pageType) |
| strategyChanged / broadcastModeChanged / naviDirectionChanged / dayAndNightModeChanged / scaleAutoChanged / stopSpeaking |
导航组件页内的设置变化 |
错误码
| 错误码 |
说明 |
| 9080001 |
应用上下文获取失败 |
| 9080002 |
用户未同意隐私政策 |
| 9080003 |
导航 SDK 初始化失败 |
| 9080004 |
未设置高德 API Key |
| 9080005 |
参数错误 |
| 9080006 |
缺少定位权限 |
| 9080007 |
路线规划失败(errMsg 中含高德错误码,如 2 网络失败、13 Key 非法、17 超配额、22 签名校验失败等) |
| 9080008 |
导航启动失败 |
| 9080009 |
导航页面打开失败 |
| 9080010 |
插件未初始化,请先调用 initModule |
示例
完整示例见项目中的 pages/amap-navi/amap-navi.vue(初始化、算路、导航组件页、语音、事件日志)。
注意事项
- 必须自定义基座:插件依赖高德导航 SDK,标准基座无法生效,请提交云端打包生成自定义基座后再真机运行。
- Key 绑定:高德 Key 需与本应用的包名、签名 SHA1 绑定,否则算路返回「用户 key 非法或过期」。
- 收费接口:货车、摩托车、骑行电动车算路为高德收费接口,需通过高德工单系统申请商务授权,否则算路会失败。
- 导航组件页途经点上限为 3 个,而普通算路接口最多支持 16 个途经点。
- 实时导航需要定位权限,且会自动开启卫星定位;模拟导航(
naviType: 'emulator')无需定位。
- 车辆信息需在算路前设置,否则要等到下一次算路才生效(插件已在算路流程中自动按参数调用
setCarInfo)。
- 每次初始化会复用
AMapNavi 单例,页面销毁时建议调用 destroyModule 释放资源。
更新日志
见 changelog.md。