HarmonyOS 使用定位偶现m_singleLocation is nullptr导致定位失败

一个使用位置的业务场景,使用定位,偶现拿不到位置,并伴随"m_singleLocation is nullptr!"日志异常。日志输出如下:

07-16 14:54:11.762   32196-32196  C02300/Locator_standard      E     [(GenerateCompleteContext:456)]m_singleLocation is nullptr! 
  • 1.

一开始出现在三方库中,以为是三方库的问题,遂自己使用原生接口实现,概率降低,但仍会出现(常出现在第一次进入该页面)。

调用位置相关代码如下:

async updateLocation(){
  let isAuth = await AuthUtil.checkPermissions('ohos.permission.APPROXIMATELY_LOCATION') && await AuthUtil.checkPermissions('ohos.permission.LOCATION');
  if (!isAuth) {
    //获取用户授权
    let code = await AuthUtil.reqPermissionsList(['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION']);
    if (!code) {
      //授权失败
      return
    }
  }

  //解析定位
  let current = await geoLocationManager.getCurrentLocation({
    scenario: geoLocationManager.LocationRequestScenario.DAILY_LIFE_SERVICE,
    maxAccuracy: 0,
    timeoutMs: 1000
  });

  let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {"latitude": current.latitude, "longitude": current.longitude, "maxItems": 1};
  try {
    let result :geoLocationManager.GeoAddress[] = await geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest)
    if (result){
      //获取到位置信息
      this.positionStr = result[0]?.placeName || ''
      this.hasGetPos = true
      let des:string[] | undefined =result[0]?.descriptions
      let streetCode : string = des?.[1] || ''
      if (streetCode.length >0) {
        let areaCode:string = streetCode.slice(0, 6);
        //请求水印信息,包括天气等
        let getWaterInfoReq :GetWaterInfoApi = new GetWaterInfoApi(areaCode,this.positionStr)
        this.waterInfo = await getWaterInfoReq.getWaterInfo()
        console.error("水印信息:"+JSON.stringify(this.waterInfo))
      }
    }
  } catch (err) {
    console.error("errCode:" + JSON.stringify(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.
  • 37.
  • 38.
  • 39.
HarmonyOS
2024-12-23 15:08:32
960浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

m_singleLocation is nullptr导致定位失败,可以参考一下这个链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/errorcode-geolocationmanager-V5#section3301200-定位失败未获取到定位结果

同时,精度似乎设置的有问题,当scenario为DAILY_LIFE_SERVICE/NO_POWER或者priority为LOW_POWER/FIRST_FIX时,建议设置maxAccuracy为大于100的值,建议修改一下,可以参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-geolocationmanager-V5#locationrequest

分享
微博
QQ
微信
回复
2024-12-23 19:26:08


相关问题
HarmonyOS 定位功能定位失败问题
1689浏览 • 1回复 待解决
HarmonyOS 内网环境定位失败
876浏览 • 1回复 待解决
HarmonyOS 获取定位失败问题
986浏览 • 1回复 待解决
startAbility调用失败如何定位
1504浏览 • 1回复 待解决
精度优先获取定位失败
2735浏览 • 1回复 待解决
HarmonyOS 接口返回空字段
567浏览 • 1回复 待解决
HarmonyOS 申请定位权限失败问题
1244浏览 • 1回复 待解决
HarmonyOS media.AVPlayer报错
798浏览 • 1回复 待解决
HarmonyOS 定位失败 错误码3301200:
826浏览 • 1回复 待解决
HarmonyOS 获取定位一直失败
914浏览 • 1回复 待解决
HarmonyOS app图标显示错误
904浏览 • 1回复 待解决
Web加载失败问题定位定界指导
807浏览 • 1回复 待解决
HarmonyOS 视频播放 5400106 错误码
852浏览 • 1回复 待解决
HarmonyOS ArkTS调C++ 方法找不到。
1372浏览 • 1回复 待解决
router.back调用时,app自动退出
2368浏览 • 1回复 待解决
HarmonyOS 定位服务
773浏览 • 1回复 待解决