百度地图开放平台
更新时间: 2026/07/22 20:34
其他自定义能力
下载开发文档
概述

导航UI自定义能力,将手图自定义导航的能力通过 SDK 接口暴露,支持日夜模式切换、实时路况显示方式配置、地图元素(路口放大图、车道信息、速度显示、路名、车标罗盘、红色引导线等)的显隐控制。所有配置支持按车辆类型(驾车/新能源/货车/摩托车)分别存储,满足不同出行场景下的个性化配置需求。

1. 核心接口
1.1 导航UI配置接口 BNINaviUIConfigInterface
export interface BNINaviUIConfigInterface {
// 日夜模式
setDayNightMode(mode: number, vehicleType?: BNRoutePlanModeType): void;
getDayNightMode(vehicleType?: BNRoutePlanModeType): number;
// 实时路况显示模式
setTrafficDisplayMode(mode: number, vehicleType?: BNRoutePlanModeType): void;
getTrafficDisplayMode(vehicleType?: BNRoutePlanModeType): number;
// 地图元素显隐控制
setShowRoadEnlargeView(isShow: boolean, vehicleType?: BNRoutePlanModeType): void;
getShowRoadEnlargeView(vehicleType?: BNRoutePlanModeType): boolean;
setShowTraffic(isShow: boolean, vehicleType?: BNRoutePlanModeType): void;
getShowTraffic(vehicleType?: BNRoutePlanModeType): boolean;
setShowLaneInfo(isShow: boolean, vehicleType?: BNRoutePlanModeType): void;
getShowLaneInfo(vehicleType?: BNRoutePlanModeType): boolean;
setShowSpeedView(isShow: boolean, vehicleType?: BNRoutePlanModeType): void;
getShowSpeedView(vehicleType?: BNRoutePlanModeType): boolean;
setShowRoadName(isShow: boolean, vehicleType?: BNRoutePlanModeType): void;
getShowRoadName(vehicleType?: BNRoutePlanModeType): boolean;
setShowCarLogoCompass(isShow: boolean, vehicleType?: BNRoutePlanModeType): void;
getShowCarLogoCompass(vehicleType?: BNRoutePlanModeType): boolean;
setShowCarLogoToEndRedLine(isShow: boolean, vehicleType?: BNRoutePlanModeType): void;
getShowCarLogoToEndRedLine(vehicleType?: BNRoutePlanModeType): boolean;
}
2. 功能详解
2.1 日夜模式配置
setDayNightMode(mode: number, vehicleType?: BNRoutePlanModeType): void

设置日夜模式
**参数说明**:

  • `mode`: 日夜模式

  • `0` = 白天

  • `1` = 黑夜

  • `2` = 自动

  • `vehicleType`(可选): 车辆类型,默认为 `BNRoutePlanModeType.Car`

**存储机制**:配置会持久化存储到本地设备,按车辆类型分别存储。

getDayNightMode(vehicleType?: BNRoutePlanModeType): number

获取日夜模式
**参数说明**:

  • `vehicleType`(可选): 车辆类型,默认为 `BNRoutePlanModeType.Car`

**返回值说明**:

  • `0` = 白天

  • `1` = 黑夜

  • `2` = 自动

**特点**:

  • 返回持久化存储的配置值

  • 按车辆类型返回对应配置

2.2 实时路况显示模式配置
setTrafficDisplayMode(mode: number, vehicleType?: BNRoutePlanModeType): void

设置实时路况显示模式
**参数说明**:

  • `mode`: 路况显示模式

  • `0` = 简约路况条

  • `1` = 全览小窗

  • `2` = 智能路况条

  • `vehicleType`(可选): 车辆类型,默认为 `BNRoutePlanModeType.Car`

**存储机制**:配置会持久化存储到本地设备,按车辆类型分别存储。

getTrafficDisplayMode(vehicleType?: BNRoutePlanModeType): number

获取实时路况显示模式
**参数说明**:

  • `vehicleType`(可选): 车辆类型,默认为 `BNRoutePlanModeType.Car`

**返回值说明**:

  • `0` = 简约路况条

  • `1` = 全览小窗

  • `2` = 智能路况条

**特点**:

  • 返回持久化存储的配置值

  • 按车辆类型返回对应配置

2.3 地图元素显隐控制

以下方法用于控制导航过程中各类地图元素的显示和隐藏,所有配置均支持按车辆类型分别存储。

方法名称功能说明参数说明

setShowRoadEnlargeView(isShow, vehicleType?)

设置是否显示路口放大图

isShow:是否显示

vehicleType(可选):车辆类型,默认为 Car

getShowRoadEnlargeView(vehicleType?)

获取是否显示路口放大图

vehicleType(可选):车辆类型,默认为 Car

setShowTraffic(isShow, vehicleType?)

设置是否显示实时路况

isShow:是否显示

vehicleType(可选):车辆类型,默认为 Car

getShowTraffic(vehicleType?)

获取是否显示实时路况

vehicleType(可选):车辆类型,默认为 Car

setShowLaneInfo(isShow, vehicleType?)

设置是否显示车道信息

isShow:是否显示

vehicleType(可选):车辆类型,默认为 Car

getShowLaneInfo(vehicleType?)

获取是否显示车道信息

vehicleType(可选):车辆类型,默认为 Car

setShowSpeedView(isShow, vehicleType?)

设置是否显示速度显示控件

isShow:是否显示

vehicleType(可选):车辆类型,默认为 Car

getShowSpeedView(vehicleType?)

获取是否显示速度显示控件

vehicleType(可选):车辆类型,默认为 Car

setShowRoadName(isShow, vehicleType?)

设置是否显示路名信息

isShow:是否显示

vehicleType(可选):车辆类型,默认为 Car

getShowRoadName(vehicleType?)

获取是否显示路名信息

vehicleType(可选):车辆类型,默认为 Car

setShowCarLogoCompass(isShow, vehicleType?)

设置是否显示车标罗盘

isShow:是否显示

vehicleType(可选):车辆类型,默认为 Car

getShowCarLogoCompass(vehicleType?)

获取是否显示车标罗盘

vehicleType(可选):车辆类型,默认为 Car

setShowCarLogoToEndRedLine(isShow, vehicleType?)

设置是否显示车标到终点的红色引导线

isShow:是否显示

vehicleType(可选):车辆类型,默认为 Car

getShowCarLogoToEndRedLine(vehicleType?)

获取是否显示车标到终点的红色引导线

vehicleType(可选):车辆类型,默认为 Car

**存储机制**:所有配置均会持久化存储到本地设备,按车辆类型分别存储。

3. 使用示例
3.1 基础用法
import { BNRoutePlanModeType } from '@ohos/baidunavigation';
// 获取导航UI配置能力实例
const naviUIConfig = sdkService.naviUIConfig;
// 设置日夜模式为黑夜(使用默认车辆类型 - 驾车)
naviUIConfig.setDayNightMode(1);
// 检查日夜模式状态
const dayNightMode = naviUIConfig.getDayNightMode();
console.log(`当前日夜模式:${dayNightMode === 0 ? '白天' : dayNightMode === 1 ? '黑夜' : '自动'}`);
// 设置路况显示模式为全览小窗
naviUIConfig.setTrafficDisplayMode(1);
// 隐藏路口放大图
naviUIConfig.setShowRoadEnlargeView(false);
// 显示实时路况
naviUIConfig.setShowTraffic(true);
3.2 按车辆类型配置
import { BNRoutePlanModeType } from '@ohos/baidunavigation';
const naviUIConfig = sdkService.naviUIConfig;
// 为驾车模式配置
naviUIConfig.setDayNightMode(2, BNRoutePlanModeType.Car); // 自动模式
naviUIConfig.setTrafficDisplayMode(2, BNRoutePlanModeType.Car); // 智能路况条
naviUIConfig.setShowSpeedView(true, BNRoutePlanModeType.Car); // 显示速度控件
// 为新能源模式配置
naviUIConfig.setDayNightMode(0, BNRoutePlanModeType.Energy); // 白天模式
naviUIConfig.setTrafficDisplayMode(1, BNRoutePlanModeType.Energy); // 全览小窗
naviUIConfig.setShowSpeedView(false, BNRoutePlanModeType.Energy); // 隐藏速度控件
// 为货车模式配置
naviUIConfig.setDayNightMode(1, BNRoutePlanModeType.Truck); // 黑夜模式
naviUIConfig.setShowCarLogoToEndRedLine(true, BNRoutePlanModeType.Truck); // 显示红色引导线
3.3 场景化配置
// 场景1: 简约导航UI - 适用于熟悉路线的场景
const naviUIConfig = sdkService.naviUIConfig;
naviUIConfig.setShowRoadEnlargeView(false); // 隐藏路口放大图
naviUIConfig.setShowLaneInfo(false); // 隐藏车道信息
naviUIConfig.setShowRoadName(false); // 隐藏路名信息
naviUIConfig.setTrafficDisplayMode(0); // 简约路况条
// 场景2: 完整导航UI - 适用于陌生路线的场景
naviUIConfig.setShowRoadEnlargeView(true); // 显示路口放大图
naviUIConfig.setShowLaneInfo(true); // 显示车道信息
naviUIConfig.setShowRoadName(true); // 显示路名信息
naviUIConfig.setShowCarLogoCompass(true); // 显示车标罗盘
naviUIConfig.setTrafficDisplayMode(1); // 全览小窗
// 场景3: 夜间驾驶模式
naviUIConfig.setDayNightMode(1); // 黑夜模式
naviUIConfig.setShowSpeedView(true); // 显示速度控件(夜间注意限速)
naviUIConfig.setShowCarLogoToEndRedLine(true); // 显示红色引导线(增强可见性)
3.4 配置状态查询
const naviUIConfig = sdkService.naviUIConfig;
// 查询驾车模式的配置
const carDayNightMode = naviUIConfig.getDayNightMode(BNRoutePlanModeType.Car);
const carTrafficMode = naviUIConfig.getTrafficDisplayMode(BNRoutePlanModeType.Car);
const showRoadEnlarge = naviUIConfig.getShowRoadEnlargeView(BNRoutePlanModeType.Car);
console.log(`驾车模式配置:`);
console.log(`- 日夜模式: ${carDayNightMode}`);
console.log(`- 路况显示: ${carTrafficMode}`);
console.log(`- 路口放大图: ${showRoadEnlarge ? '显示' : '隐藏'}`);
// 查询新能源模式的配置
const energyDayNightMode = naviUIConfig.getDayNightMode(BNRoutePlanModeType.Energy);
console.log(`新能源模式日夜模式: ${energyDayNightMode}`);

上一篇

自定义标注

下一篇

导航地图控制
本篇文章对您是否有帮助?