HarmonyOS 请求定位获取地理位置,获取失败

HarmonyOS
2024-12-25 16:04:36
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

可以参考demo:

1.检查下module.json5里面是否申请了权限。

2.位置服务需要检查用户授权。

3.位置服务不支持模拟器使用。

import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
import { geoLocationManager } from '@kit.LocationKit';

@Entry
@Component
struct Index {
  @State localText: string = '当前位置'
  permissions: Array<Permissions> = ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION'];

  getLocal() {
    const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
    // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
    atManager.requestPermissionsFromUser(context, this.permissions).then((data) => {
      let grantStatus: Array<number> = data.authResults;
      let length: number = grantStatus.length;
      for (let i = 0; i < length; i++) {
        if (grantStatus[i] === 0) {
          // 用户授权,可以继续访问目标操作
          const requestInfo: geoLocationManager.LocationRequest = {
            'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX,
            'scenario': geoLocationManager.LocationRequestScenario.UNSET,
            'timeInterval': 1,
            'distanceInterval': 0,
            'maxAccuracy': 0
          };
          geoLocationManager.getCurrentLocation(requestInfo)
            .then((location: geoLocationManager.Location) => {
              let reverseGeocodeRequest: geoLocationManager.ReverseGeoCodeRequest = location;
              try {
                geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest).then((data) => {
                  console.log('getAddressesFromLocation: ' + JSON.stringify(data));
                  this.localText = data[0].placeName + ''
                })
                  .catch((error: number) => {
                    console.error('promise, getAddressesFromLocation: error=' + JSON.stringify(error));
                  });
              } catch (err) {
                console.error("errCode:");
              }
            })
            .catch((err: Error) => {
              console.error(`Failed to get current location. Code is , message is ${err.message}`);
            });
        } else {
          // 用户拒绝授权
          return;
        }
      }
      // 授权成功
    }).catch((err: Error) => {
      console.error(`Failed to request permissions from user. Code is , message is ${err.message}`);
    })
  }

  build() {
    Column() {
      Button(this.localText).onClick(() => {
        this.getLocal();
      })
    }
  }
}
分享
微博
QQ
微信
回复
2024-12-25 18:56:12
相关问题
获取安全地理位置信息接口的实现
661浏览 • 1回复 待解决
HarmonyOS 安全地理位置
381浏览 • 1回复 待解决
MySQL 如何按照地理位置排序?
3023浏览 • 1回复 待解决
HarmonyOS 获取定位失败问题
323浏览 • 1回复 待解决
精度优先获取定位失败
2100浏览 • 1回复 待解决
HarmonyOS 获取定位一直失败
331浏览 • 1回复 待解决