开发指南

创建工程

获取KEY

如何申请 KEY

  1. 创建应用

进入控制台,创建一个新应用。如果您之前已经创建过应用,可直接跳过这个步骤。

创建应用截图
创建应用截图

审核通过后,即可获取密钥 accessKey。

项目创建

工程配置

1. 打开/创建一个鸿蒙工程

使用 DevEco Studio 打开一个鸿蒙工程,或者新建一个鸿蒙工程

2. SDK 导入

(1)本地引用

将从官网下载的 har文件放到您工程中 entry 的libs目录中,如下图所示

SDK导入截图1

在entry目录下的oh-package.json5中引用,如下图所示

SDK导入截图2

"@ohos/wzLocation": "file:libs/wzLocation.har"
      

3. 权限配置

在module.json5文件中配置 HarmonyOS NEXT 定位 SDK 所需的相关权限,确保 SDK 可以正常使用。配置如下:


"requestPermissions": [
     {
        "name": "ohos.permission.LOCATION",
        "reason": "允许应用在前台运行时获取位置信息",
     },
     {
        "name": "ohos.permission.LOCATION_IN_BACKGROUND",
        "reason": "允许应用在后台运行时获取位置信息",
     },
     {
        "name": "ohos.permission.APPROXIMATELY_LOCATION",
        "reason": "允许应用获取设备模糊位置信息",
     },
     {
        "name": "ohos.permission.APP_TRACKING_CONSENT",
        "reason": "允许应用获取设备唯一标识符",
     },
     {
        "name": "ohos.permission.GET_WIFI_INFO",
        "reason": "允许应用获取连接wifi信息",
     },
     {
        "name": "ohos.permission.GET_NETWORK_INFO",
        "reason": "允许应用获取网络信息",
     },
     {
        "name": "ohos.permission.INTERNET",
        "reason": "允许应用访问网络",
     },
     {
        "name": "ohos.permission.KEEP_BACKGROUND_RUNNING",
        "reason": "允许应用进行长时任务",
     }
]
      

4. AK 配置


this.wzLocation.initOption(官网申请accessKey, 设备ID, 定位频率);
      

获取位置信息

单次定位

维智 HarmonyOS NEXT 定位 sdk 提供单次定位的能力。具体使用方法如下:


wzLocation: WzLocation = new WzLocation();
// 定位接口回调
setLocationCallback() {
    this.wzLocation.setLocationCall({
        success: (location?: LocationRes) => {
            if (location) {
                console.log('定位成功:', location);
                this.locationResult = `定位成功: 纬度 ${location.location.position.point.latitude}, 经度 ${location.location.position.point.longitude}, 地址 ${location.location.address.name}`;
            } else {
                console.log('定位成功,但返回的位置信息为空');
                this.locationResult = '定位成功,但返回的位置信息为空';
            }
        },
        fail: (error: ErrorInfo) => {
            console.error('定位失败:' + error.msg);
            this.locationResult = `定位失败: ${error.msg}`;
        }
    });
}

// 初始化定位配置
initLocationOption(interval: number) {
    this.wzLocation.initOption(申请的accessKey, 设备ID, 持续定位时间--单位秒);
}

// 启动单次定位
this.initLocationOption(0);
this.setLocationCallback();
console.error('测试单次定位:-----》');
this.wzLocation.startLocation().then(() => {
    console.log('单次定位已启动');
});
      

后台定位(持续定位)


wzLocation: WzLocation = new WzLocation();
// 定位接口回调
setLocationCallback() {
    this.wzLocation.setLocationCall({
        success: (location?: LocationRes) => {
            if (location) {
                console.log('定位成功:', location);
                this.locationResult = `定位成功: 纬度 ${location.location.position.point.latitude}, 经度 ${location.location.position.point.longitude}, 地址 ${location.location.address.name}`;
            } else {
                console.log('定位成功,但返回的位置信息为空');
                this.locationResult = '定位成功,但返回的位置信息为空';
            }
        },
        fail: (error: ErrorInfo) => {
            console.error('定位失败:' + error.msg);
            this.locationResult = `定位失败: ${error.msg}`;
        }
    });
}

// 初始化定位配置
initLocationOption(interval: number) {
    this.wzLocation.initOption(申请的accessKey, 设备ID, 持续定位时间--单位秒);
}

// 启动持续定位
this.initLocationOption(5);
this.setLocationCallback();
console.error('测试连续定位-----》:');
this.wzLocation.startContinuousLocation();
      

获取地址


wzLocation: WzLocation = new WzLocation();
// 定位接口回调
setLocationCallback() {
    this.wzLocation.setLocationCall({
        success: (location?: LocationRes) => {
            if (location) {
                console.log('定位成功:', location);
                this.locationResult = `定位成功地址: ${location.location.address.name}`;
            } else {
                console.log('定位成功,但返回的位置信息为空');
                this.locationResult = '定位成功,但返回的位置信息为空';
            }
        },
        fail: (error: ErrorInfo) => {
            console.error('定位失败:' + error.msg);
            this.locationResult = `定位失败: ${error.msg}`;
        }
    });
}

// 获取地址信息接口
this.initLocationOption(0);
this.setLocationCallback();
this.getAddressFromWZ({latitude: 23.72398754219176,longitude: 113.10165074642399})