geoLocationManager.getCurrentLocation({
priority: priority,
scenario: geoLocationManager.LocationRequestScenario.DAILY_LIFE_SERVICE,
maxAccuracy: 20
}, (err: BusinessError, location: geoLocationManager.Location) => {
if (err) {
callback.onFail(JSErrors.ERR_CODE_10004, JSErrors.ERR_EXTINFO_10004 + err.message)
return
}
if (location) {
geoLocationManager.getAddressesFromLocation({
latitude: location.latitude,
longitude: location.longitude,
locale: "zh",
maxItems: 5
}, (err, data) => {
if (err) {
callback.onFail(JSErrors.ERR_CODE_10004, JSErrors.ERR_EXTINFO_10004 + err.message)
return
}
if (data && data.length > 0) {
const dataFirst = data[0]
const result: JSONObject = {
latitude: dataFirst.latitude ?? '',
longitude: dataFirst.longitude ?? '',
altitude: location.altitude ?? '',
country: dataFirst.countryName ?? '',
city: dataFirst.locality ?? '',
province: dataFirst.administrativeArea ?? '',
district: dataFirst.subLocality ?? '',
street: dataFirst.roadName ?? '',
streetNumber: dataFirst.premises ?? '',
adCode: dataFirst.postalCode ?? ''
}
callback.onResult(result);
} else {
callback.onFail(JSErrors.ERR_CODE_10004, JSErrors.ERR_EXTINFO_10004 + "获取位置信息失败")
}
})
} else {
callback.onFail(JSErrors.ERR_CODE_10004, JSErrors.ERR_EXTINFO_10004 + "获取坐标信息失败")
}
})
获取到的海拔altitude和邮政编码postalCode两个字段一直是空的
如果使用的是网络定位的话 那么是没有海拔返回的在室外,使用GPS定位一般都是有海拔返回的。
开发者可以尝试将LocationRequestPriority、LocationRequestScenario分别设置为ACCURACY、NAVIGATION。
再进行尝试后看是否能获取海拔和邮编https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-geolocationmanager-V5\#locationrequestscenario