在鸿蒙开发中获取当前定位问题?

使用如下代码获取当前定位:

let requestInfo:geoLocationManager.LocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'scenario': geoLocationManager.LocationRequestScenario.UNSET, 'timeInterval': 60, 'distanceInterval': 100, 'maxAccuracy': 0}; 
let locationChange = (location:geoLocationManager.Location):void => { 
  console.info('locationChanger: data: ' + JSON.stringify(location)); 
  let markerOptions: mapCommon.MarkerOptions = { 
    position: { 
      latitude: Number(location.latitude), 
      longitude: Number(location.longitude) 
    }, 
    rotation: 0, 
    visible: true, 
    zIndex: 0, 
    alpha: 1, 
    anchorU: 0.5, 
    anchorV: 1, 
    clickable: true, 
    draggable: true, 
    flat: false, 
    icon:'mine_select.png' 
  }; 
  this.mapController?.addMarker(markerOptions) 
}; 
try { 
  geoLocationManager.on('locationChange', requestInfo, locationChange); 
} catch (err) { 
  console.error("err:" + JSON.stringify(err)); 
}

当设置priority=ACCURACY,scenario=UNSET时,无法获取当前定位信息,也没有抛出异常code。但是设置priority=FIRST_FIX,scenario=UNSET时可以获取当前位置信息,与实际位置偏差大概四五十米,这是什么原因呢。(已授予App精准位置权限)

阅读 754
1 个回答

当设置priority=ACCURACY,定位精度优先策略主要以GNSS定位技术为主,在开阔场景下可以提供米级的定位精度,具体性能指标依赖用户设备的定位硬件能力,但在室内等强遮蔽定位场景下,无法提供准确的位置服务。不过,可以用模拟器试试。当priority设置为First_Fix(快速定位),会优先从最快返回地理位置的途径获取位置信息。在室内没有GPS信号的情况下,网络为优先选项。 如果没有网络,可能会出现获取不到的情况。 参考文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...
同时LocationRequest 参数中,distanceInterval 表示上报位置信息的距离间隔。单位是米,默认值为0,取值范围为大于等于0。设置100米,所以移动100米才会上报一次。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题