HarmonyOS 定位功能定位失败问题

根据开发文档定位api开发时, 定位功能失效无法成功进入geoLocationManager.on()的回调, 通过geoLocationManager.getCurrentLocation()的到的提示是BussinessError 3301200: Failed to obtain the geographical location.

已经申请了定位权限 [‘ohos.permission.LOCATION’, ‘ohos.permission.APPROXIMATELY_LOCATION’] 这两个, 并且已经在module.json5中声明了权限

HarmonyOS
2024-12-27 16:30:59
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

请确认目前的设备是否是联网状态,无网情况只能获取gps位置,gps位置首定位时间较长。超过了当前设置的timeout时间还没有返回位置就会报3301200。

无网情况下获取GPS位置至少需要30秒,有网情况下会快很多,具体数据目前已经丢失。等测试重新获取数据。可以试下无网情况下,把超时时间设置大点

‘priority’: geoLocationManager.LocationRequestPriority.ACCURACY 表示精度优先。

定位精度优先策略主要以GNSS定位技术为主,在开阔场景下可以提供米级的定位精度,具体性能指标依赖用户设备的定位硬件能力,但在室内等强遮蔽定位场景下,无法提供准确的位置服务。

该优先级仅有GNSS定位,为系统规格。

若需要在精确定位失败后使用其他途径定位可以使用First_Fix。

FIRST_FIX 表示快速获取位置优先,如果应用希望快速拿到一个位置,可以将优先级设置为该字段。

快速定位优先策略会同时使用GNSS定位、基站定位和WLAN、蓝牙定位技术,以便室内和户外场景下,通过此策略都可以获得位置结果,当各种定位技术都有提供位置结果时,系统会选择其中精度较好的结果返回给应用。因为对各种定位技术同时使用,对设备的硬件资源消耗较大,功耗也较大。

当前可使用精度优先进行定位,如果失败,用速度优先进行兜底,实现代码如下:

getLocation() {
  let requestInfo: geoLocationManager.CurrentLocationRequest = {
    'priority': geoLocationManager.LocationRequestPriority.ACCURACY,
    'scenario': geoLocationManager.LocationRequestScenario.UNSET,
    "timeoutMs": 5000
  };
  if (geoLocationManager.isLocationEnabled()) {
    console.log("定位已使能");
  }
  else {
    console.log("定位未使能");
  }
  try {
    geoLocationManager.getCurrentLocation(requestInfo, (err, location) => {
      if (err.code > 0) {
        let requestInfo2: geoLocationManager.CurrentLocationRequest = {
          'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX,
          'scenario': geoLocationManager.LocationRequestScenario.UNSET,
          "timeoutMs": 5000
        };
        geoLocationManager.getCurrentLocation(requestInfo2, (err, location2) => {
          console.info("备用位置获取成功")
          this.lat = location2.latitude;
          this.lon = location2.longitude;
        })
        return;
      }
      console.info("GPS位置获取成功")
      this.lat = location.latitude;
      this.lon = location.longitude;
    })
  } catch (err) {
    console.error("报错原因为:");
    console.error(err);
  }
}
分享
微博
QQ
微信
回复
2024-12-27 19:36:34
相关问题
HarmonyOS 获取定位失败问题
472浏览 • 1回复 待解决
HarmonyOS 申请定位权限失败问题
522浏览 • 1回复 待解决
Web加载失败问题定位定界指导
378浏览 • 1回复 待解决
HarmonyOS 内网环境定位失败
440浏览 • 1回复 待解决
精度优先获取定位失败
2190浏览 • 1回复 待解决
startAbility调用失败如何定位
1181浏览 • 1回复 待解决
Webview是否支持定位功能
1035浏览 • 1回复 待解决
HarmonyOS定位权限问题
927浏览 • 1回复 待解决
HarmonyOS 后台定位问题
765浏览 • 1回复 待解决
HarmonyOS 定位失败 错误码3301200:
442浏览 • 1回复 待解决
HarmonyOS 获取定位一直失败
410浏览 • 1回复 待解决
HarmonyOS 如何实现锚点定位功能
325浏览 • 1回复 待解决
报错问题不全没法定位问题
679浏览 • 1回复 待解决
关于系统定位缓存问题咨询
1179浏览 • 1回复 待解决
HarmonyOS crash日志如何定位问题代码
997浏览 • 1回复 待解决
HarmonyOS Canvas横屏后定位问题
181浏览 • 1回复 待解决
加解密问题定位指导
782浏览 • 1回复 待解决
HarmonyOS 定位服务
364浏览 • 1回复 待解决
HarmonyOS 线上监控如何定位相关问题
220浏览 • 1回复 待解决
求大佬告知如何定位混淆问题
902浏览 • 1回复 待解决
如何定位musl libc接口使用问题
677浏览 • 0回复 待解决