更新记录

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,无需额外处理。

  • privacyAgreefalse 时插件会直接初始化失败(错误码 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 导航信息:currentRoadNamenextRoadNamepathRetainDistancepathRetainTimecurStepRetainDistanceiconTypecurSpeednaviAction
gpsLocationUpdate 定位信息:latitudelongitudebearingspeedaccuracytimematchedRoute
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(初始化、算路、导航组件页、语音、事件日志)。

注意事项

  1. 必须自定义基座:插件依赖高德导航 SDK,标准基座无法生效,请提交云端打包生成自定义基座后再真机运行。
  2. Key 绑定:高德 Key 需与本应用的包名、签名 SHA1 绑定,否则算路返回「用户 key 非法或过期」。
  3. 收费接口:货车、摩托车、骑行电动车算路为高德收费接口,需通过高德工单系统申请商务授权,否则算路会失败。
  4. 导航组件页途经点上限为 3 个,而普通算路接口最多支持 16 个途经点。
  5. 实时导航需要定位权限,且会自动开启卫星定位;模拟导航(naviType: 'emulator')无需定位。
  6. 车辆信息需在算路前设置,否则要等到下一次算路才生效(插件已在算路流程中自动按参数调用 setCarInfo)。
  7. 每次初始化会复用 AMapNavi 单例,页面销毁时建议调用 destroyModule 释放资源。

更新日志

changelog.md

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.INTERNET,android.permission.ACCESS_FINE_LOCATION,android.permission.ACCESS_COARSE_LOCATION,android.permission.ACCESS_NETWORK_STATE,android.permission.ACCESS_WIFI_STATE,android.permission.CHANGE_WIFI_STATE,android.permission.ACCESS_BACKGROUND_LOCATION,android.permission.ACCESS_LOCATION_EXTRA_COMMANDS,android.permission.WAKE_LOCK

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

定位与导航数据仅用于本地导航计算,不会上传至第三方服务器

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。