add location helper

This commit is contained in:
2024-09-06 17:05:31 +08:00
parent 7f9c4bc663
commit 15223b7de4
4 changed files with 82 additions and 42 deletions

View File

@@ -1,6 +1,7 @@
import { abilityAccessCtrl, bundleManager, common, PermissionRequestResult } from '@kit.AbilityKit';
import { abilityAccessCtrl, bundleManager, common, PermissionRequestResult, Permissions } from '@kit.AbilityKit';
import { geoLocationManager } from '@kit.LocationKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { LocationHelper } from '../../utils/LocationHelper';
@Component
@Entry({routeName: 'MapPage'})
@@ -10,32 +11,12 @@ struct MapPage {
@State isLocationPermission: boolean = false;
@State locText: string = ''
checkLocationPermission() {
let manager = abilityAccessCtrl.createAtManager() // 得到manager对象
let appInfo =
bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION) // 获取应用信息
this.appName = appInfo.name;
let context: Context = getContext(this) as common.UIAbilityContext;
let permission:string = 'ohos.permission.LOCATION'
let status = manager.checkAccessTokenSync(appInfo.appInfo.accessTokenId, "ohos.permission.LOCATION")
if (status === abilityAccessCtrl.GrantStatus.PERMISSION_DENIED) {
this.isShowLocationPopup = true;
manager.requestPermissionsFromUser(context, ['ohos.permission.LOCATION'], (err: BusinessError, data: PermissionRequestResult) => {
});
} else {
this.getLocationAddress();
}
}
requestionLocationPermission() {
}
locationHelper: LocationHelper = new LocationHelper(getContext(this) as common.UIAbilityContext);
@Builder
locationViewBuilder() {
Row() {
Text('开启定位权限,为您推荐附近商家与好物 ').fontSize(15);
Text('开启定位权限').fontSize(15);
Button('去开启')
.type(ButtonType.Normal)
.height(24)
@@ -44,7 +25,6 @@ struct MapPage {
.backgroundColor(Color.Red)
.onClick(() => {
if (this.isLocationPermission) {
this.checkLocationPermission()
}
})
@@ -73,23 +53,8 @@ struct MapPage {
}
aboutToAppear(): void {
this.checkLocationPermission()
}
this.locationHelper.requestPermissionsFromUser((allowScope: boolean, allowPrecision: boolean) => {
getLocationAddress() {
let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1};
try {
geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) => {
if (err) {
console.error('getAddressesFromLocation: err=' + JSON.stringify(err));
}
if (data) {
console.log('getAddressesFromLocation: data=' + JSON.stringify(data));
this.locText = data[0].placeName ?? '';
}
});
} catch (err) {
console.error("errCode:" + JSON.stringify(err));
}
})
}
}