更新记录
1.0.2(2025-06-10)
- 优化app-harmony平台uts代码
1.0.1(2025-06-09)
- 添加module.json5
1.0.0(2025-06-08)
- 首发,支持android/ios/harmonyos
平台兼容性
uni-app
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | - | - | - | - | 5.0 | 12 | √ |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | - | × | × | × | × |
uni-app x
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
- | - | 5.0 | 12 | √ | × |
UTS环境兼容性
uni-app | uni-app x |
---|---|
√ | √ |
sn-bdlocation
复制代码sn-bdlocation是uts版本百度定位插件,支持android/ios/鸿蒙
使用说明
ak获取及配置
- 申请ak,在控制台创建应用,获取ak
- 配置ak
- android
项目根目录创建AndroidManifest.xml (替换ak为申请的ak)
复制代码<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
<application>
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="<ak>"></meta-data>
</application>
</manifest>
- ios
项目根目录创建Info.plist (替换ak为申请的ak)
复制代码<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BD_LBS_API_KEY</key>
<string>替换ak</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>永久定位</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>永久定位</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>前台定位</string>
</dict>
</plist>
- harmonyos
项目更目录创建/harmony-configs/entry/src/main/resources/base/element/string.json
复制代码{
"string": [{
"name": "permission_location_reason",
"value": "允许应用在前台运行时获取位置信息"
}]
}
复制代码client.setAK('ak')
代码示例
uvue代码
复制代码<template>
<view>
<button type="default" @click="start">开始</button>
<button type="default" @click="stop">停止</button>
</view>
</template>
<script setup>
import * as BDLocation from '@/uni_modules/sn-bdlocation';
const client = BDLocation.getBDLocationClient();
onLoad((e) => {
// harmony必须填写
client.setAK('');
client.setAgreePrivacy(true);
client.onError((e) => {
console.log('error', e);
});
client.onUpdateLocation((location: BDLocation.SnDbLocation) => {
console.log('onUpdateLocation', location);
});
});
const start = () => {
client.stop();
client.start();
};
const stop = () => {
client.stop();
};
</script>
<style>
</style>
api说明
获取定位客户端实例
复制代码const client = BDLocation.getBDLocationClient()
客户端方法
setAK(ak: string)
设置百度地图AK,鸿蒙系统必须调用此方法设置AK
复制代码client.setAK('your_ak_here')
setAgreePrivacy(agree: boolean)
设置是否同意隐私政策,使用前必须设置为true
复制代码client.setAgreePrivacy(true)
onUpdateLocation(callback: (location: SnDbLocation) => void)
设置位置更新回调函数
复制代码client.onUpdateLocation((location) => {
console.log('位置信息:', location)
// location包含以下字段:
// latitude: number - 纬度
// longitude: number - 经度
// radius: number - 定位精度半径
// coorType: string - 坐标系类型
// locType: number - 定位类型
// rgcData?: SnDbRgcData - 地理编码信息(可选)
// - address: string - 详细地址
// - country: string - 国家
// - province: string - 省份
// - city: string - 城市
})
onError(callback: (result: SnBdlocationResult) => void)
设置错误回调函数
复制代码client.onError((result) => {
console.log('错误信息:', result)
// result包含以下字段:
// code: number - 错误码
// data: UTSJSONObject - 错误详情
})
setLocOption(option: SnDbLocOption)
设置定位参数(可选)
复制代码client.setLocOption({})
start()
开始单次定位
复制代码client.start()
startUpdatingLocation()
开始持续定位,仅ios可用,需配置location后台模式
复制代码client.startUpdatingLocation()
stop()
停止定位
复制代码client.stop()
朱老师~啥时候弄个腾讯定位,,,uniapp的vue2支持的项目。。