一. 位置定位信息
1. 获取当前位置
使用geoLocationManager.getCurrentLocation()方法
2. 地址逆解析
使用geoLocationManager.getAddressesFromLocation(参数)方法
3. 实时定位(对位置变化的订阅)
主要使用包(geoLocationManager)的两个方法: (1)on (2)off
参考(接口文档的: Location Kit(位置服务)-Location Kit开发指南):
二. 地图服务
1.地图服务相关准备
(1)生成密匙和证书请求文件 .p12 和 .csr
(2)申请调试证书 .cer
①AppGallery Connect (huawei.com)网站选择“用户与访问”。
②命名证书名称,证书类型选"调试证书",再选取csr文件(也就是之前添加在appKey文件夹的csr文件),之后再提交即可;
hm_guardian.cer然后放在之前存放"hm_guardian.p12"文件的appKey文件夹即可;
(3)创建HarmonyOS应用
①修改包名,注意唯一性(后面加了一个li);
②
③填写应用参数
之后点击应用信息 与 我的项目 就能看到了;
点击我的项目时会出现以下提示,将之前的包名复制进来即可;
(4)创建p7b调试证书
选择“HarmonyOS应用 > HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面,点击右上角“添加”。
选择设备,第50页全选了
提交后:
将hm_guardianDebug.p7b文件放之前存放"hm_guardian.p12"文件的appKey文件夹即可;
(5)本地证书签名
可能出现以下错误:解决方式:先module.json5把一些权限注释掉
另外可参考以下发邮件申请权限:
(6)开通并配置地图服务
client ID是这个:
将client ID写value里面即可:
开启地图相关的API管理:
2.代码实现
(1)地图组件说明 (代码注释提供说明)
import { AsyncCallback } from '@kit.BasicServicesKit';
import { map, mapCommon, MapComponent, site } from '@kit.MapKit';
import { locationManager } from '../../manager';
import { geoLocationManager } from '@kit.LocationKit';
@Entry
@Component
struct HuaweiMapDemo {
private TAG = "HuaweiMapDemo";
// 地图初始化配置
private mapOption?: mapCommon.MapOptions;
//地图初始化所需的回调函数
private callback?: AsyncCallback<map.MapComponentController>;
//地图控制器
private mapController?: map.MapComponentController;
async aboutToAppear() {
await locationManager.requestPermissions()
this.initMap()
}
initMap() {
// 地图初始化参数,设置地图中心点坐标及层级
this.mapOption = {
//默认地图中心点位置
position: {
target: {
//如下是上海的经纬度
latitude: 31.231706,
longitude: 121.472644
},
//缩放级别
zoom: 16 //2~20
},
//显示定位图标
myLocationControlsEnabled: true,
scaleControlsEnabled: true
};
// 地图初始化的回调
this.callback = async (err, mapController) => {
if (!err) {
// 获取地图的控制器类,用来操作地图
this.mapController = mapController;
// 监听地图初始化完毕
this.mapController.on("mapLoad", () => {
console.info(this.TAG, `on-mapLoad`);
//启用我的位置图层(点击右下角瞄准 定位移动到我的当前位置)
this.mapController?.setMyLocationEnabled(true)
//启动我的位置按钮(也就是右下角那个瞄准按钮)
this.mapController?.setMyLocationControlsEnabled(true)
});
}
};
}
build() {
Stack() {
//MapComponent地图组件
// 调用MapComponent组件初始化地图
MapComponent({ mapOptions: this.mapOption, mapCallback: this.callback })
.width('100%')
.height('100%');
Column({ space: 10 }) {
Button('地图相机-移动地图/缩放')
.onClick(() => {
const update = map.newCameraPosition({
target: {
latitude: 32.0,
longitude: 118.0
},
zoom: 10,
})
this.mapController?.animateCamera(update)
})
Button('位置服务-搜索')
.onClick(async () => {
const location = await geoLocationManager.getCurrentLocation()
//导入site
const res = await site.searchByText({
query: '派出所',
location:location,
radius:5000 //米
})
AlertDialog.show({ message: JSON.stringify(res, null, 2) })
})
}
}
.height('100%')
}
}
总结
一. 位置定位信息
- 获取当前位置:
使用geoLocationManager.getCurrentLocation()方法
- 地址逆解析:
使用geoLocationManager.getAddressesFromLocation(参数)方法
- 实时定位(对位置变化的订阅):
使用包(geoLocationManager)的两个方法: (1)on (2)off
二. 地图服务
地图服务相关准备:
- (1)生成密匙和证书请求文件 .p12 和 .csr
- (2)申请调试证书 .cer
- (3)创建HarmonyOS应用
- (4)创建p7b调试证书
- (5)本地证书签名
- (6)开通并配置地图服务
代码实现: 主要使用到的包:
'@kit.MapKit'
的map, mapCommon, MapComponent, site
'@kit.BasicServicesKit'
的syncCallback
: 主要作用为地图初始化所需的回调函数;