更新记录

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
  1. 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>
  1. 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>
  1. 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()

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

温先生

2025-06-10

朱老师~啥时候弄个腾讯定位,,,uniapp的vue2支持的项目。。

码农朱哲 2025-06-10

可能这个周末

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问