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