更新记录
2.1.6(2026-06-28)
- 底部行程进度:整块在白底栏内居中;剩余时间在「距离 + ETA」行宽度内居中(不改 Mapbox 约束,避免时间行消失/白底撑满屏)
- 出行方式切换条:去掉外层背景色;静音按钮与切换条同一行左侧对齐
- 导航页:Mapbox 官方转向横幅保持默认左右布局;关闭/静音按钮圆角
2.1.0(2026-06-28)
- 插件市场上架 ID:
cmk-mapboxnav(作者前缀 cmk) - 补充 readme / changelog / license
- 导航页内支持骑行 / 汽车 / 步行切换
- Android UTS + Maven 依赖(Maps 11.24.3 / Navigation 3.24.3)
- thin AAR + 云端拉取 Mapbox SDK,避免上传体积超限
平台兼容性
uni-app(4.36)
| Vue2 | Vue2插件版本 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | Android插件版本 | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | 2.1.0 | × | × | × | × | × | 7.1 | 2.1.0 | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
Mapbox 导航 (Android)
基于 Mapbox Maps 11.24.3 + Navigation 3.24.3 的 uni-app UTS 插件,提供 Android 端路线规划与实时导航(驾车 / 骑行 / 步行,导航页内可切换)。
平台:仅 App-Android(Vue2)。iOS 暂未支持。
依赖:用户需自备 Mapbox Access Token(pk.开头)。
当前版本:见package.json→version(建议 2.1.6+)
安装
- 从插件市场导入
cmk-mapboxnav到项目uni_modules/目录。 - 不要在 manifest 中勾选同名「原生语言插件」;本插件为 UTS,随
uni_modules自动集成。 - 使用 HBuilderX 4.36+(建议 5.x),制作 Android 自定义调试基座 后真机测试。
- 每次更新插件版本后:卸载旧 App → 重新制作自定义基座 → 选自定义基座运行。
新建项目试用(必读)
从插件市场导入后,不能直接「标准基座运行」。UTS 插件必须打进自定义基座。
步骤
- 插件市场 → 试用/购买 → 导入到项目(确认存在
uni_modules/cmk-mapboxnav/)。 - manifest → App 原生插件配置:
nativePlugins留空,不要勾选任何 Mapbox 相关原生插件。 - 发行 → 原生 App-云打包 → 制作自定义调试基座(只勾 Android)。
- 等待云端打包完成,卸载手机上旧 App(含旧标准/旧基座)。
- 运行 → 运行到手机或模拟器 → 运行基座选择 → 自定义调试基座。
- 再点运行到 Android 真机。
若日志出现 uts插件[cmk-mapboxnav]不存在,请重新打包自定义基座,说明当前手机上的基座没有编入本插件——按上面 3~5 步重做。
页面代码
本插件仅含导航 API,
最小页面示例见下方「快速开始」。pages.json 只需注册你的 index 页,无需 easycom 配置 mapbox 组件。
快速开始
import {
initMapboxServices,
navigationFromCurrentLocation,
routePlanning,
stopNavigation
} from '@/uni_modules/cmk-mapboxnav/js_sdk/index.js'
// 1. 初始化(全局调用一次,传入你的 Mapbox Token)
await initMapboxServices({
accessToken: 'pk.你的MapboxToken'
})
// 2. 从当前位置导航到目的地
await navigationFromCurrentLocation({
endLat: 39.917337,
endLng: 116.397056,
endName: '故宫博物院',
routeProfile: 'cycling', // driving | cycling | walking
showProfileSwitcher: true // 是否显示导航页内 骑行/汽车/步行 切换条,默认 true
})
// 3. 指定起终点路线规划(进入同一导航页)
await routePlanning({
startLat: 39.904556,
startLng: 116.427231,
startName: '北京站',
endLat: 39.917337,
endLng: 116.397056,
endName: '故宫博物院',
routeProfile: 'driving',
showProfileSwitcher: false // 隐藏切换条,仅用初始 routeProfile
})
// 4. 停止导航(关闭导航 Activity)
stopNavigation()
API
| 方法 | 说明 |
|---|---|
initMapboxServices({ accessToken }) |
初始化 Mapbox Token,导航前必调 |
isAvailable() |
检测当前平台是否可用 |
navigationFromCurrentLocation(options) |
以设备 GPS 为起点打开导航 |
routePlanning(options) |
指定起终点打开导航 |
directNavigation(options) |
同 routePlanning |
stopNavigation() |
关闭导航页 |
getNavPluginDiagnostics() |
调试:插件加载状态 |
options 常用字段
| 字段 | 类型 | 说明 |
|---|---|---|
accessToken |
string | Mapbox Token(initMapboxServices 用) |
endLat / endLng |
number | 目的地坐标(也可用 destLat / destLng) |
endName |
string | 目的地名称(也可用 destTitle / destAddress) |
startLat / startLng |
number | 起点坐标(routePlanning 时使用,别名 originLat / originLng) |
routeProfile |
string | driving | cycling | walking(别名 mode) |
showProfileSwitcher |
boolean | 是否在导航页显示骑行/汽车/步行切换条,默认 true |
导航页 UI 说明
| 区域 | 说明 |
|---|---|
| 顶部 | Mapbox 官方 MapboxManeuverView(左:转向图标+距离,右:路名) |
| 右上 | 圆角关闭按钮 |
| 横幅下方一行 | 左侧圆角静音按钮 + 中间出行方式切换(无整条背景色) |
| 底部 | 全宽白底栏;进度块整体居中;首行剩余时间相对下方「距离+到达时间」居中 |
云打包说明
manifest
nativePlugins留空,勿勾选旧版cmk_MapboxNav原生插件。
Android 权限
插件已在 utssdk/app-android/AndroidManifest.xml 声明定位、前台服务、通知等权限;请在应用 manifest.json 中保留定位相关权限说明(隐私政策需说明用途)。
Mapbox SDK 依赖(Maven)
Mapbox SDK 通过 utssdk/app-android/config.json 的 Maven 仓储 在云端拉取(非 fat AAR 上传),上传体积约 < 1MB。
若云打包报 Could not find com.mapbox...:
- 确认仓储可公网访问;
- 或参考
config.maven.example.json替换为你自己的 Mapbox SDK 镜像; - 修改后需 重新制作自定义基座。
libs/ 目录仅含 thin AAR(插件原生 UI 与桥接,约 55KB),不要向 libs/ 放入 Mapbox vendor AAR。
config.json 已包含 androidx.databinding:viewbinding(Mapbox 官方 UI 组件必需)。
注意事项
- Mapbox 账号与计费:路线与地图请求消耗 Mapbox 配额,请遵守 Mapbox 服务条款。
- Token 安全:生产环境建议通过服务端下发 Token,勿硬编码在客户端。
- 首次冷启动:地图样式首次加载较慢,属正常现象。
- Vue3:当前版本仅验证 Vue2;Vue3 标记为未测试。
- 更新插件后界面无变化:必须重新制作自定义基座;建议删除
unpackage后重打。
目录结构
cmk-mapboxnav/
├── package.json
├── readme.md
├── changelog.md
├── license.md
├── js_sdk/index.js # Vue2 Promise 封装(推荐引用)
└── utssdk/
├── interface.uts # API 类型声明
└── app-android/
├── index.uts
├── config.json # Gradle 依赖与 Maven 仓储
├── AndroidManifest.xml
└── libs/
└── cmk_MapboxNav-release.aar # thin 插件 AAR
常见问题
| 现象 | 处理 |
|---|---|
uts插件[cmk-mapboxnav]不存在,请重新打包自定义基座 |
未用自定义调试基座;先云打包 Android 自定义基座,卸载旧 App 后再运行 |
| 更新插件后 UI 没变化 | 原生 AAR 在 libs/ 内;需重制自定义基座,必要时删 unpackage |
找不到 cmk_mapbox/utils/mapUtils.js |
页面引用了地图选点插件但未安装;删除该 import,仅用本插件 js_sdk |
| 云打包找不到 Mapbox 依赖 | 检查 config.json 仓储 URL 是否可达 |
导航页黑屏 / MapboxManeuverView 崩溃 |
确认 config.json 含 androidx.databinding:viewbinding(2.1.2+ 已内置) |
真机闪退 JsonPrimitive / HttpUrl |
确认使用插件自带 config.json 完整依赖列表 |
| 底部只显示距离/ETA、无剩余时间 | 请升级到 2.1.6+(修复错误约束导致的布局异常) |
| 导航页打不开 | 是否已 initMapboxServices 且 Token 有效 |
| 定位不准 | 授予精确定位权限,室外 GPS 信号 |
技术支持
- 插件 ID:
cmk-mapboxnav - 版本:
package.json→version - 更新记录:
changelog.md

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 6
赞赏 0
下载 12348685
赞赏 1925
赞赏
京公网安备:11010802035340号