一.在module,json5中申请所需权限
"requestPermissions": [
{
"name": "ohos.permission.APPROXIMATELY_LOCATION",
"reason": "$string:Harmony_location_permission_reason",
"usedScene": {
"abilities": [
"Harmony_location_demoAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.LOCATION",
"reason": "$string:Harmony_location_permission_reason",
"usedScene": {
"abilities": [
"Harmony_location_demoAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.LOCATION_IN_BACKGROUND",
"reason": "$string:Harmony_location_permission_reason",
"usedScene": {
"abilities": [
"Harmony_location_demoAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.INTERNET",
"reason": "$string:Harmony_location_permission_reason",
"usedScene": {
"abilities": [
"Harmony_location_demoAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.KEEP_BACKGROUND_RUNNING",
"reason": "$string:Harmony_location_permission_reason",
"usedScene": {
"abilities": [
"Harmony_location_demoAbility"
],
"when": "always"
}
}
],
二.在页面中校验是否开启权限(获取当前位置)
private array: Array<Permissions> = ['ohos.permission.APPROXIMATELY_LOCATION','ohos.permission.LOCATION'];
abilityAccessCtrl.createAtManager().requestPermissionsFromUser(this.context, this.array).then((res) => {
for (let i = 0; i < res.permissions.length; i++) {
if (res.permissions[i] === "ohos.permission.APPROXIMATELY_LOCATION" && res.authResults[i] === 0) {
// 请求当前位置 LOW_POWER 低功耗 精准度不高
let requestInfo: geoLocationManager.CurrentLocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'timeoutMs': 10000};
geoLocationManager.getCurrentLocation(requestInfo).then((result) => {
// PreferencesUtils.saveStringData('location',JSON.stringify(result))
})
}
}
})
三.拿到app的appID去官网获取key
// 获取app的appid
let flag = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
let bundleInfo = bundleManager.getBundleInfoForSelfSync(flag)
let appId = bundleInfo.signatureInfo.appId;
四.拿到的key传递用来获取地图
MapsInitializer.setApiKey("你的key");
initMap = () =>{
//getInstance获取地图实例 registerMapViewCreatedCallback注册地图创建回调
MapViewManager.getInstance().registerMapViewCreatedCallback((mapview?: MapView, mapViewName?: string) => {
if (!mapview) {
return;
}
let mapView = mapview;
// 创建地图 地图生命周期方法,创建时调用,创建地图
mapView.onCreate();
// 异步获取地图操作实例AMap
mapView.getMapAsync(async (map) => {
// 这个map就是最终创建出来页面上显示的操作,对地图一系列操作都在这里进行
let aMap: AMap = map;
this.aMap = map
})
})
}
五.在build中使用MapViewComponent组件
MapViewComponent()
.width('100%')
.height('92%')
至此地图以及可以在页面上显示了