更新记录
1.0.13(2026-06-08)
增加鸿蒙端 重整插件文档,补充鸿蒙平台接入注意事项
1.0.12(2026-01-21)
优化iOS
1.0.11(2025-12-04)
you hua
查看更多平台兼容性
uni-app(4.05)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | - | - | - | √ | √ | 5.0 | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.11)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | 5.0 | √ | √ | - |
xtf-baidulocation
百度地图定位插件,支持 uni-app x 和 uni-app。
功能说明
- 获取当前位置
- 监听实时定位结果
- 支持单次定位和连续定位
- 支持地址信息解析
- 支持室内定位、北斗定位、后台定位等配置项
接入前准备
1. 申请百度地图 Key
使用前需要到百度地图开放平台申请 Key,并按平台配置包名、签名等信息。
- Android 使用
key - iOS 使用
ios_key - HarmonyOS 使用
harmony_key,鸿蒙端优先使用该 Key
参考文档:
2. 推荐搭配
3. 问题反馈
长期维护,有任何问题可在插件群联系作者。
快速使用
uni-app x
import {
isProviderEnabled,
openGpsSetting,
setLocListener,
initWithOption,
start,
LocOption,
BDAddress,
stop
} from "@/uni_modules/xtf-baidulocation"
let gpsEnable: boolean = isProviderEnabled()
openGpsSetting()
initWithOption(function(res: boolean) {
if (res) {
setLocListener(function(s: BDAddress) {
})
start()
}
}, {
scanSpan: 0,
enableBeidou: true,
indoor: true,
key: "xxxxxxxxxxxx",
ios_key: "xxxx",
harmony_key: "harmony_xxxxxxxx"
} as LocOption)
// stop()
uni-app
import {
isProviderEnabled,
openGpsSetting,
setLocListener,
initWithOption,
start,
LocOption,
BDAddress,
stop
} from "@/uni_modules/xtf-baidulocation"
let gpsEnable = isProviderEnabled()
openGpsSetting()
initWithOption(function(res) {
if (res) {
setLocListener(function(s) {
})
start()
}
}, {
scanSpan: 0,
enableBeidou: true,
indoor: true,
key: "xxxxxxxxxxxx",
ios_key: "xxxx",
harmony_key: "harmony_xxxxxxxx"
})
// stop()
使用流程建议
推荐按下面顺序接入:
- 调用
isProviderEnabled()检查系统定位开关。 - 如未开启,调用
openGpsSetting()引导用户打开定位服务。 - 调用
initWithOption()完成插件初始化。 - 在初始化成功后调用
setLocListener()监听定位结果。 - 调用
start()开始定位。 - 不再需要时调用
stop()停止定位。
参数说明
export type LocOption = {
key: string | null,
ios_key: string | null,
harmony_key: string | null,
locationMode: number | null,
coorType: string | null,
scanSpan: number | null,
openGnss: boolean | null,
enableSimulateGnss: boolean | null,
needAddress: boolean | null,
enableBeidou: boolean | null,
backgroundLocation: boolean | null,
indoor: boolean | null,
notificationIconName: string | null,
notificationChannel: string | null,
notificationTitle: string | null,
notificationMsg: string | null,
}
字段含义
key:百度地图 Android Keyios_key:百度地图 iOS Keyharmony_key:百度地图 HarmonyOS Key,鸿蒙端优先使用locationMode:定位模式0:高精度定位,同时使用网络和 GNSS,优先返回高精度结果1:低功耗定位,只使用网络定位(Wi-Fi 和基站)2:仅设备定位,只使用 GNSS,不支持室内定位3:模糊定位,只使用基站信息
coorType:返回坐标类型,默认gcj02gcj02:国测局坐标bd09ll:百度经纬度坐标bd09:百度墨卡托坐标"":海外地区统一返回wgs84
scanSpan:定位间隔,0表示单次定位;非0时需设置为1000ms以上才有效openGnss:是否使用卫星定位,默认false;高精度定位和仅设备定位建议设为trueenableSimulateGnss:是否允许卫星仿真结果,默认false表示过滤仿真结果needAddress:是否需要街道地址信息,默认trueenableBeidou:是否启用北斗定位backgroundLocation:是否启用后台定位indoor:是否启用室内定位notificationIconName:后台定位通知图标名称,图标需放在/res/drawable/目录notificationChannel:后台定位通知栏 Channel 名称notificationTitle:后台定位通知标题notificationMsg:后台定位通知内容
鸿蒙注意事项
1. 请单独配置鸿蒙 Key
- 鸿蒙平台请优先配置
harmony_key - 不建议直接复用 Android Key,避免平台配置不一致导致鉴权失败
- 百度地图开放平台中需确认鸿蒙应用对应的包信息、签名信息配置正确
2. 需要声明定位权限
鸿蒙平台对定位权限要求更严格,至少需要在 manifest.json 的 app-harmony 节点声明:
ohos.permission.APPROXIMATELY_LOCATIONohos.permission.LOCATION
注意:申请精确定位时,通常需要同时声明模糊定位权限。
3. 需要补充权限说明
permissiondescriptions需要填写清楚用途- 建议直接说明用于“获取当前位置、实时定位、导航或轨迹记录”
- 如果权限说明过于模糊,容易影响审核或用户授权通过率
4. 使用系统定位模块时要确认模块声明
- 鸿蒙侧如依赖系统定位能力,需要确认
manifest.json中已正确声明uni-location模块 - 较老版本 HBuilderX 中对应节点可能是
uni-getLocation - 如果项目是历史工程升级上来的,建议重点检查这一项
5. 后台定位不是只开参数就够
backgroundLocation: true只表示插件侧启用后台定位逻辑- 鸿蒙平台通常还需要额外声明后台定位权限,例如
ohos.permission.LOCATION_IN_BACKGROUND - 长时间后台运行场景还可能涉及
ohos.permission.KEEP_BACKGROUND_RUNNING以及原生工程配置 - 如果只改 JS 或 UTS 调用参数,没有补足鸿蒙侧权限和能力声明,后台定位通常不会生效
6. 真机调试优先
- 定位授权、系统开关、后台保活等能力建议优先真机验证
- 模拟器或非完整调试环境下,权限弹窗、后台能力、厂商 SDK 行为可能与正式设备不一致
- 使用第三方原生定位 SDK 时,通常需要打自定义基座后再调试
7. 重点排查鉴权失败问题
如果鸿蒙端无法定位,优先检查以下项目:
harmony_key是否填写正确- 百度地图开放平台是否已开通定位服务
- 包名、签名、平台配置是否与当前打包环境一致
- 是否已经授予定位权限
- 是否已打开系统定位开关
基座制作与运行说明
Android / iOS
本插件涉及原生能力,Android 和 iOS 调试时请优先使用自定义基座。
1. 如何制作基座
- 在 HBuilderX 中选择云打包或自定义基座相关功能,制作包含当前插件的基座
- 制作基座前,请确认当前插件代码、
manifest.json配置、应用包名和证书配置都已经准备完成 - 如果插件新增了原生依赖、权限、清单配置或 SDK 参数变更,请重新制作基座
2. 运行时要选择基座
- 真机运行时,不要直接使用普通运行模式
- 请在运行配置里选择对应平台的自定义基座进行启动
- 如果仍然使用默认基座,插件中的原生代码通常不会生效,可能出现无法定位、无回调或直接报错
3. 未修改版本号时,需要先卸载手机里的旧基座
- 如果重新制作基座时没有修改应用版本号,手机里已安装的旧基座可能不会被正确覆盖
- 这时请先手动卸载手机中的旧基座,再重新安装新的基座包
- 否则容易出现“明明重新打了基座,但运行结果还是旧代码”的情况
4. 哪些情况必须重做基座
- 新增或修改了原生插件代码
- 新增或修改了定位相关权限
- 修改了
manifest.json中的原生配置 - 更新了百度地图 Key、SDK 配置或其他原生依赖
鸿蒙端特别说明
uni-app 仅支持源码版
- 鸿蒙端
uni-app当前只能使用源码版方式运行和调试 - 不能按 Android / iOS 的常规自定义基座方式理解和处理
- 如果你在鸿蒙端调试插件,请优先按照源码工程方式进行联调
调试判断建议
- Android / iOS:优先检查是否已经制作并选择了正确基座
- HarmonyOS:优先确认当前使用的是源码版工程,而不是按普通基座方式运行
定位结果状态码参考
BDAddress 中 locType 的常见返回值可参考下表,完整含义请以百度地图官方文档为准。
| locType | 含义 | 说明 |
|---|---|---|
| 61 | 卫星定位结果 | 卫星定位成功 |
| 62 | 定位失败 | 无法获取有效定位依据,请检查运营商网络或 Wi-Fi |
| 63 | 网络异常 | 未成功向服务器发起请求,请检查当前网络 |
| 66 | 离线定位结果 | 通过 requestOfflineLocaiton 调用时对应的返回结果 |
| 67 | 离线定位失败 | 离线定位失败 |
| 69 | 定位开关未打开 | 请检查系统定位服务是否开启 |
| 70 | 无定位权限 | 请检查是否已授予定位权限 |
| 71 | 定位开关未打开且无定位权限 | 请同时检查定位开关和权限状态 |
| 161 | 网络定位结果 | 网络定位成功 |
| 162 | 请求串密文解析失败 | 一般由于客户端 SO 文件加载失败 |
| 167 | 服务端定位失败 | 请检查是否禁用位置信息权限 |
| 505 | AK 不存在或非法 | 请重新申请或核对百度地图 Key |
| 506 | 定位服务未开启 | 请到控制台确认 AK 已勾选定位服务功能 |
相关文档
打赏
感谢您使用此插件,如果本插件解决了你的问题,欢迎支持作者。

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(1)
下载 11593
赞赏 74
下载 12227315
赞赏 1918
赞赏
京公网安备:11010802035340号