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);
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
分享
微博
QQ
微信
回复
2024-12-27 19:36:34
相关问题
HarmonyOS 获取定位失败问题
964浏览 • 1回复 待解决
HarmonyOS 申请定位权限失败问题
1244浏览 • 1回复 待解决
Web加载失败问题定位定界指导
802浏览 • 1回复 待解决
HarmonyOS 内网环境定位失败
874浏览 • 1回复 待解决
startAbility调用失败如何定位
1501浏览 • 1回复 待解决
精度优先获取定位失败
2717浏览 • 1回复 待解决
Webview是否支持定位功能
1512浏览 • 1回复 待解决
HarmonyOS 定位失败 错误码3301200:
821浏览 • 1回复 待解决
HarmonyOS定位权限问题
1356浏览 • 1回复 待解决
HarmonyOS 后台定位问题
1316浏览 • 1回复 待解决
HarmonyOS 获取定位一直失败
900浏览 • 1回复 待解决
HarmonyOS 如何实现锚点定位功能
679浏览 • 1回复 待解决
harmonyos中如何实现精准的定位功能
229浏览 • 0回复 待解决
关于系统定位缓存问题咨询
1605浏览 • 1回复 待解决
报错问题不全没法定位问题
980浏览 • 1回复 待解决
HarmonyOS Canvas横屏后定位问题
624浏览 • 1回复 待解决
HarmonyOS crash日志如何定位问题代码
1458浏览 • 1回复 待解决
HarmonyOS 定位服务
757浏览 • 1回复 待解决
加解密问题定位指导
1288浏览 • 1回复 待解决
HarmonyOS 线上监控如何定位相关问题
705浏览 • 1回复 待解决
求大佬告知如何定位混淆问题
1248浏览 • 1回复 待解决