更新记录
1.0.0(2025-08-01) 下载此版本
新增功能
- ✨ SDK初始化 (
uni.initLocation
) - 支持设置高德地图API Key - ✨ 支持单次定位 (
uni.hmGetLocation
) - ✨ 支持逆地理编码,获取详细地址信息
- ✨ 支持高精度定位配置
- ✨ 支持 gcj02 和 wgs84 坐标系
- ✨ 完整的 TypeScript 类型定义
- ✨ 自动权限管理
重要更新
平台兼容性
uni-app(3.1.0)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | - | - | - | - | - | × | × | - |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - | - | - | - |
uni-app x(3.1.0)
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
- | - | - | - | - | - |
鸿蒙单次定位插件
基于高德地图SDK的鸿蒙单次定位插件,专注于单次精准定位。
功能特点
- 🎯 专注单次定位:只提供单次定位功能,简单高效
- 🛡️ 自动权限管理:内置权限检查和申请功能
- 📍 支持逆地理编码:可获取详细地址信息
- 🎛️ 多种定位模式:支持高精度定位
- 🔄 多坐标系支持:支持GCJ02和WGS84坐标系
使用前准备
- 在高德开放平台申请API Key
- 确保项目已配置鸿蒙开发环境
- 重要:高德地图包名绑定问题
- 鸿蒙的实际包名和配置的包名不一致
- 需要动态获取真实的包名进行绑定
- 例如:配置包名是
com.xxx.xxx.hm.app
,但实际绑定需要类似com.xxx.xxx.hm.app_BE6Zi6trCIMZ3xte+3U2gqwnGgeAMtmRe+CaKAXADyuzX5KoGlXIGgFqcmazw/O1
- 插件已自动打印真实包名:
console.log('bundleInfo.appid:', bundleInfo.signatureInfo.appId)
,打印结果类似bundleInfo.appid: com.xxx.xxx.hm.app_BE6Zi6trCIMZ3xte+3U2gqwnGgeAMtmRe+CaKAXADyuzX5KoGlXIGgFqcmazw/O14=
,使用者可以直接从控制台获取真实包名 - 注意:release版本可能用的描述文件和debug不同,会导致appid不一样,最好真机上release版本打印复制这个appid
- 否则会出现
请求逆地理异常:10008 INVALID_USER_SCODE
错误
快速开始
1. 在APP.vue中初始化SDK
重要:必须在APP.vue的onLaunch中初始化
方式一:导入使用
// App.vue
import { initLocation } from '@/uni_modules/hr-harmony-location'
export default {
onLaunch: function() {
// #ifdef APP-HARMONY
//鸿蒙 高德定位初始化
initLocation({
apiKey: 'your-amap-api-key', // 替换为您的API Key
success: (res) => {
console.log('SDK初始化成功')
},
fail: (err) => {
console.error('SDK初始化失败:', err)
},
complete: () => {
}
});
// #endif
}
}
方式二:直接使用(无需导入)
// App.vue
export default {
onLaunch: function() {
// #ifdef APP-HARMONY
//鸿蒙 高德定位初始化
uni.initLocation({
apiKey: 'your-amap-api-key', // 替换为您的API Key
success: (res) => {
console.log('SDK初始化成功')
},
fail: (err) => {
console.error('SDK初始化失败:', err)
},
complete: () => {
}
});
// #endif
}
}
2. 获取当前位置
使用hmGetLocation方法(推荐)
方式一:导入使用
import { hmGetLocation } from '@/uni_modules/hr-harmony-location'
// 获取位置信息
hmGetLocation().then(result => {
// 返回的是字符串,需要序列化
const locationData = JSON.parse(result)
console.log('定位成功:', locationData)
// 位置信息
const { latitude, longitude, accuracy, reGeo } = locationData
console.log(`位置: ${latitude}, ${longitude}`)
console.log(`精度: ${accuracy}米`)
console.log(`地址: ${reGeo.address}`)
}).catch(err => {
console.error('定位失败:', err)
})
方式二:直接使用(无需导入)
// 直接使用uni.hmGetLocation,无需导入
uni.hmGetLocation().then(result => {
// 返回的是字符串,需要序列化
const locationData = JSON.parse(result)
console.log('定位成功:', locationData)
// 位置信息
const { latitude, longitude, accuracy, reGeo } = locationData
console.log(`位置: ${latitude}, ${longitude}`)
console.log(`精度: ${accuracy}米`)
console.log(`地址: ${reGeo.address}`)
}).catch(err => {
console.error('定位失败:', err)
})
API 参考
initLocation(options)
初始化高德地图定位SDK
参数说明
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
apiKey | String | 是 | 高德地图API Key |
success | Function | 否 | 成功回调 |
fail | Function | 否 | 失败回调 |
complete | Function | 否 | 完成回调 |
hmGetLocation()
获取当前位置信息(推荐使用)
返回值:Promise
getLocation(options)
获取当前位置信息(传统方式)
参数说明
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
type | String | 否 | gcj02 | 坐标类型:gcj02 或 wgs84 |
geocode | Boolean | 否 | true | 是否返回地址信息 |
isHighAccuracy | Boolean | 否 | false | 是否开启高精度定位 |
highAccuracyExpireTime | Number | 否 | 15000 | 高精度定位超时时间(ms) |
success | Function | 否 | - | 成功回调 |
fail | Function | 否 | - | 失败回调 |
complete | Function | 否 | - | 完成回调 |
返回数据格式
hmGetLocation返回的数据格式(JSON字符串,需要序列化)
{
"latitude": 40, // 纬度
"longitude": 116, // 经度
"altitude": 43.5, // 海拔高度
"accuracy": 6.5, // 精度(米)
"speed": 0, // 速度
"timeStamp": 1753333240682, // 时间戳
"direction": 45, // 方向角
"timeSinceBoot": 14521830348673, // 开机时间
"isOffset": false, // 是否偏移
"reGeo": { // 逆地理编码信息
"country": "中国",
"province": "北京市",
"city": "北京市",
"district": "门头沟区",
"citycode": "010",
"adcode": "110109",
"street": [],
"number": [],
"poiName": "门头沟原点公园",
"aoiName": "",
"desc": "北京市门头沟区靠近门头沟原点公园",
"address": "北京市门头沟区靠近门头沟原点公园"
}
}
注意事项
- 初始化顺序:必须在APP.vue的onLaunch中使用条件编译初始化SDK
- API Key配置:请确保在高德开放平台正确配置API Key
- 包名绑定问题:
- 鸿蒙的包名绑定比较特殊,实际绑定的包名会在原包名后拼接一串动态字符串
- 建议使用真机调试时打印出实际包名,然后在高德开放平台绑定该包名
- 重要:release版本和debug版本的appid可能不同,建议用release版本真机测试获取最终的appid
- 如果出现
10008 INVALID_USER_SCODE
错误,通常是包名绑定问题
- 权限配置:插件会自动申请定位权限,无需手动配置
- 网络要求:逆地理编码功能需要网络连接
- 数据格式:hmGetLocation返回的是JSON字符串,需要使用JSON.parse()解析
更新日志
v1.0.1
- 新增hmGetLocation方法,返回更详细的定位信息
- 修复高德地图包名绑定问题
- 优化初始化流程,要求在APP.vue中初始化
v1.0.0
- 初始版本发布
- 支持SDK初始化
- 支持单次定位功能
- 支持逆地理编码