百度地图开放平台
更新时间: 2026/07/22 20:35
无UI导航
下载开发文档
概述

无UI导航(Headless Navigation)能力允许开发者在不依赖导航视图组件的情况下直接启动和停止导航。适用于后台导航、自定义 UI 导航、语音导航等不需要标准导航界面的场景。导航过程中的实时数据可通过 BNINaviEventListener 监听获取。
核心特性

  • 不依赖导航视图组件,纯逻辑层调用

  • 与标准导航共享底层引擎,数据回调完全一致

  • 配合 addNaviDataListener 可实现完全自定义的导航 UI

1. 核心接口
1.1 导航主接口 BNINaviInterface
export interface BNINaviInterface {
/**
* 开始导航
*/
startNavi: () => Promise<boolean>;
/**
* 停止导航
*/
stopNavi: () => Promise<boolean>;
/**
* 添加导航实时数据监听器
* @param listener 监听者,实现 BNINaviEventListener 接口
*/
addNaviDataListener(listener: BNINaviEventListener): void;
/**
* 移除导航实时数据监听器
* @param listener 监听者
*/
removeNaviDataListener(listener: BNINaviEventListener): void;
}
2. 功能详解
2.1 开始导航
startNavi(): Promise<boolean>

启动导航引擎,无需传入视图组件即可开始导航。
返回值

  • Promise<boolean> - true 表示导航启动成功,false 表示启动失败

使用场景

  • 后台静默导航,仅需数据回调

  • 自定义 UI 导航,自行渲染导航界面

  • 语音导航场景,不需要地图视图

示例

// 直接启动导航
const success = await sdkService.navi.startNavi();
if (success) {
console.log('导航已启动');
}
2.2 停止导航
stopNavi(): Promise<boolean>

停止当前导航,释放导航引擎资源。
返回值

  • Promise<boolean> - true 表示停止成功,false 表示停止失败

使用场景

  • 到达目的地后结束导航

  • 用户主动取消导航

示例

// 停止导航
const success = await sdkService.navi.stopNavi();
if (success) {
console.log('导航已停止');
}
3. 使用示例
3.1 基础用法
import { BNINaviEventListener } from '@ohos/baidunavigation';
// 创建数据监听器(可选)
class MyListener implements BNINaviEventListener {
onSimpleGuideInfoChange(guideInfo: BNIGuideInfo) {
console.log(`下一路口:${guideInfo.nextRoadName}`);
}
}
const listener = new MyListener();
// 注册监听器
sdkService.navi.addNaviDataListener(listener);
// 启动导航(不依赖视图组件)
const started = await sdkService.navi.startNavi();
if (started) {
console.log('无UI导航已启动,通过监听器接收实时数据');
}
// ... 导航过程中持续接收回调 ...
// 停止导航
await sdkService.navi.stopNavi();
// 移除监听器
sdkService.navi.removeNaviDataListener(listener);

上一篇

导航实时数据

下一篇

更新日志
本篇文章对您是否有帮助?