更新记录

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坐标系

使用前准备

  1. 高德开放平台申请API Key
  2. 确保项目已配置鸿蒙开发环境
  3. 重要:高德地图包名绑定问题
    • 鸿蒙的实际包名和配置的包名不一致
    • 需要动态获取真实的包名进行绑定
    • 例如:配置包名是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 - 返回JSON字符串,需要使用JSON.parse()解析

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": "北京市门头沟区靠近门头沟原点公园"
  }
}

注意事项

  1. 初始化顺序:必须在APP.vue的onLaunch中使用条件编译初始化SDK
  2. API Key配置:请确保在高德开放平台正确配置API Key
  3. 包名绑定问题
    • 鸿蒙的包名绑定比较特殊,实际绑定的包名会在原包名后拼接一串动态字符串
    • 建议使用真机调试时打印出实际包名,然后在高德开放平台绑定该包名
    • 重要:release版本和debug版本的appid可能不同,建议用release版本真机测试获取最终的appid
    • 如果出现10008 INVALID_USER_SCODE错误,通常是包名绑定问题
  4. 权限配置:插件会自动申请定位权限,无需手动配置
  5. 网络要求:逆地理编码功能需要网络连接
  6. 数据格式:hmGetLocation返回的是JSON字符串,需要使用JSON.parse()解析

更新日志

v1.0.1

  • 新增hmGetLocation方法,返回更详细的定位信息
  • 修复高德地图包名绑定问题
  • 优化初始化流程,要求在APP.vue中初始化

v1.0.0

  • 初始版本发布
  • 支持SDK初始化
  • 支持单次定位功能
  • 支持逆地理编码

隐私、权限声明

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

需要位置权限以获取定位信息

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

定位数据仅用于获取用户当前位置

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

许可协议

MIT协议

暂无用户评论。