HarmonyOS 鸿蒙Next getCurrentLocation

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next getCurrentLocation

geoLocationManager.getCurrentLocation({ 
scenario: geoLocationManager.LocationRequestScenario.UNSET,
maxAccuracy: 0,
timeoutMs: 1000
});
授权成功后,打开app后第一次请求定位,必报startLocationBussinessError 3301200: Failed to obtain the geographical location.
再次进入就正常了,请问是什么配置错误导致的嘛?


更多关于HarmonyOS 鸿蒙Next getCurrentLocation的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

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

@Component @Entry struct LocationPage{ 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)); }) .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(‘获取位置服务授权’).onClick(()=>{ this.getLocal() }) }

} } <button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

更多关于HarmonyOS 鸿蒙Next getCurrentLocation的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,获取当前位置(getCurrentLocation)通常涉及使用位置服务API。鸿蒙系统提供了一套位置服务接口,允许应用获取设备的位置信息。

要获取当前位置,开发者需要首先确保应用已获得位置权限,并初始化位置服务客户端。以下是一个简化的流程:

  1. 请求位置权限:在应用的manifest.json文件中声明位置权限,并在运行时请求用户授权。

  2. 创建位置服务客户端:使用鸿蒙提供的API创建位置服务客户端实例。

  3. 启动位置请求:通过位置服务客户端启动位置请求,设置位置请求的优先级和回调函数。

  4. 处理位置回调:在回调函数中处理位置结果,这通常包括位置坐标、精度等信息。

示例代码(伪代码):

// 初始化位置服务
var locationService = location.getLocationService();

// 设置位置请求参数
var locationOptions = new location.LocationOptions({
    priority: location.LocationPriority.HIGH,
    interval: 1000
});

// 启动位置请求
locationService.requestLocationUpdates(locationOptions, (err, locationResult) => {
    if (!err) {
        console.log("当前位置:", locationResult.latitude, locationResult.longitude);
    } else {
        console.error("获取位置失败:", err);
    }
});

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部