add location
This commit is contained in:
parent
ff8c5714d9
commit
bdfab3ab29
@ -2,7 +2,7 @@
|
|||||||
"string": [
|
"string": [
|
||||||
{
|
{
|
||||||
"name": "app_name",
|
"name": "app_name",
|
||||||
"value": "HM4Demo"
|
"value": "HMDemo"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Context } from '@ohos.arkui.UIContext';
|
import { Context } from '@ohos.arkui.UIContext';
|
||||||
import window from '@ohos.window';
|
import { window } from '@kit.ArkUI';
|
||||||
|
|
||||||
export class MyApp {
|
export class MyApp {
|
||||||
|
|
||||||
|
@ -19,19 +19,19 @@ export default class AppAbility extends UIAbility {
|
|||||||
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
|
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
|
||||||
}
|
}
|
||||||
|
|
||||||
onWindowStageCreate(windowStage: window.WindowStage): void {
|
onWindowStageCreate(windowStage: window.WindowStage): void {
|
||||||
// Main window is created, set main page for this ability
|
// Main window is created, set main page for this ability
|
||||||
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
|
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
|
||||||
MyApp.initAbility(this.context);
|
MyApp.initAbility(this.context);
|
||||||
windowStage.loadContent('pages/Index', (err, data) => {
|
windowStage.loadContent('pages/Index', (err, data) => {
|
||||||
if (err.code) {
|
if (err.code) {
|
||||||
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
|
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
MyApp.initWindow(windowStage.getMainWindowSync());
|
MyApp.initWindow(windowStage.getMainWindowSync());
|
||||||
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
|
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onWindowStageDestroy(): void {
|
onWindowStageDestroy(): void {
|
||||||
// Main window is destroyed, release UI related resources
|
// Main window is destroyed, release UI related resources
|
||||||
|
@ -65,6 +65,12 @@ struct Index {
|
|||||||
{name: "MVVM", page: 'pages/mvvm/HomePage'},
|
{name: "MVVM", page: 'pages/mvvm/HomePage'},
|
||||||
{name: "SetLanguage", page: 'pages/system/SetLanguagePage'}
|
{name: "SetLanguage", page: 'pages/system/SetLanguagePage'}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Map',
|
||||||
|
items: [
|
||||||
|
{name: 'Map', page: 'pages/map/MapPage'}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
95
app/src/main/ets/pages/map/MapPage.ets
Normal file
95
app/src/main/ets/pages/map/MapPage.ets
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
import { abilityAccessCtrl, bundleManager, common, PermissionRequestResult } from '@kit.AbilityKit';
|
||||||
|
import { geoLocationManager } from '@kit.LocationKit';
|
||||||
|
import { BusinessError } from '@kit.BasicServicesKit';
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Entry({routeName: 'MapPage'})
|
||||||
|
struct MapPage {
|
||||||
|
@State isShowLocationPopup: boolean = false
|
||||||
|
appName: string = ''
|
||||||
|
@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() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Builder
|
||||||
|
locationViewBuilder() {
|
||||||
|
Row() {
|
||||||
|
Text('开启定位权限,为您推荐附近商家与好物 ').fontSize(15);
|
||||||
|
Button('去开启')
|
||||||
|
.type(ButtonType.Normal)
|
||||||
|
.height(24)
|
||||||
|
.borderRadius(12)
|
||||||
|
.width(60)
|
||||||
|
.backgroundColor(Color.Red)
|
||||||
|
.onClick(() => {
|
||||||
|
if (this.isLocationPermission) {
|
||||||
|
this.checkLocationPermission()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
SymbolGlyph($r('sys.symbol.xmark')).width(24).height(24).borderRadius(12).onClick(() => {
|
||||||
|
this.isShowLocationPopup = false;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
.height(40)
|
||||||
|
.alignItems(VerticalAlign.Center)
|
||||||
|
.padding(5)
|
||||||
|
.position({ x: 7, y: 50 })
|
||||||
|
.zIndex(999)
|
||||||
|
.backgroundColor('#123333')
|
||||||
|
.borderRadius(10)
|
||||||
|
.opacity(0.7)
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
|
||||||
|
Column(){
|
||||||
|
if (this.isShowLocationPopup) {
|
||||||
|
this.locationViewBuilder();
|
||||||
|
}
|
||||||
|
Text(this.locText);
|
||||||
|
}.width('100%').height('100%')
|
||||||
|
}
|
||||||
|
|
||||||
|
aboutToAppear(): void {
|
||||||
|
this.checkLocationPermission()
|
||||||
|
}
|
||||||
|
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -10,6 +10,12 @@
|
|||||||
"tablet",
|
"tablet",
|
||||||
"2in1"
|
"2in1"
|
||||||
],
|
],
|
||||||
|
"metadata": [
|
||||||
|
{
|
||||||
|
"name": "client_id",
|
||||||
|
"value": "123456789"
|
||||||
|
}
|
||||||
|
],
|
||||||
"deliveryWithInstall": true,
|
"deliveryWithInstall": true,
|
||||||
"installationFree": false,
|
"installationFree": false,
|
||||||
"pages": "$profile:main_pages",
|
"pages": "$profile:main_pages",
|
||||||
@ -37,7 +43,18 @@
|
|||||||
],
|
],
|
||||||
"requestPermissions": [
|
"requestPermissions": [
|
||||||
{
|
{
|
||||||
"name" : "ohos.permission.INTERNET"
|
"name": "ohos.permission.LOCATION",
|
||||||
|
"reason": "$string:location_permission",
|
||||||
|
"usedScene": {
|
||||||
|
"when": "inuse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ohos.permission.APPROXIMATELY_LOCATION",
|
||||||
|
"reason": "$string:approximately_location",
|
||||||
|
"usedScene": {
|
||||||
|
"when": "inuse"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,14 @@
|
|||||||
{
|
{
|
||||||
"name": "set_language_title",
|
"name": "set_language_title",
|
||||||
"value": "Set Language"
|
"value": "Set Language"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "location_permission",
|
||||||
|
"value": "location_permission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "approximately_location",
|
||||||
|
"value": "approximately_location"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -27,6 +27,10 @@
|
|||||||
"pages/system/SetLanguagePage",
|
"pages/system/SetLanguagePage",
|
||||||
|
|
||||||
"pages/web/WebPage",
|
"pages/web/WebPage",
|
||||||
"pages/web/WebDialogPage"
|
"pages/web/WebDialogPage",
|
||||||
|
|
||||||
|
"pages/map/MapPage"
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,14 @@
|
|||||||
{
|
{
|
||||||
"name": "set_language_title",
|
"name": "set_language_title",
|
||||||
"value": "Set Language"
|
"value": "Set Language"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "location_permission",
|
||||||
|
"value": "location_permission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "approximately_location",
|
||||||
|
"value": "approximately_location"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -15,6 +15,14 @@
|
|||||||
{
|
{
|
||||||
"name": "set_language_title",
|
"name": "set_language_title",
|
||||||
"value": "设置语言"
|
"value": "设置语言"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "location_permission",
|
||||||
|
"value": "location_permission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "approximately_location",
|
||||||
|
"value": "approximately_location"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -15,4 +15,12 @@ export class Res {
|
|||||||
let retStr = textDecoder.decodeWithStream( content , decodeWithStreamOptions);
|
let retStr = textDecoder.decodeWithStream( content , decodeWithStreamOptions);
|
||||||
return retStr;
|
return retStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getResStr(descName: string, ...rest: string[]): ResourceStr {
|
||||||
|
try {
|
||||||
|
return $r(`app.string.${descName}`, ...rest);
|
||||||
|
} catch (e) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user