uni-app 调用uni.getLocation()并配置geocode属性为true后返回数据无address属性
uni-app 调用uni.getLocation()并配置geocode属性为true后返回数据无address属性
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Windows 11 家庭中文版22000.376 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
手机系统:Android
手机系统版本号:Android 9.0
手机厂商:荣耀
手机机型:荣耀9i
页面类型:vue
vue版本:vue2
打包方式:云端
App下载地址或H5网址:https://ide.dcloud.net.cn/build/download/468851b0-67a0-11ec-9c8f-c12cf7d5ccf8
示例代码:
uni.getLocation({
type: 'wgs84',
geocode: true,
success: function(res) {
console.log(res)
}
});
操作步骤:
uni.getLocation({
type: 'wgs84',
geocode: true,
success: function(res) {
console.log(res)
}
});
预期结果:
{
"type": "wgs84",
"altitude": 0,
"latitude": 28.234935,
"longitude": 112.87043,
"speed": 0,
"accuracy": 30,
"errMsg": "getLocation:ok",
"address": {
"country":"",
"province":""
.............
}
}
实际结果:
{
"type": "wgs84",
"altitude": 0,
"latitude": 28.234935,
"longitude": 112.87043,
"speed": 0,
"accuracy": 30,
"errMsg": "getLocation:ok"
}
bug描述:
调用uni.getLocation()并配置了geocode属性为true后返回的数据里没有address属性,文档里说是会返回的,然而实际没有返回。导致应用报错

更多关于uni-app 调用uni.getLocation()并配置geocode属性为true后返回数据无address属性的实战教程也可以访问 https://www.itying.com/category-93-b0.html
文档中不是写着 仅App平台支持(安卓需指定 type 为 gcj02 并配置三方定位SDK)?
更多关于uni-app 调用uni.getLocation()并配置geocode属性为true后返回数据无address属性的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个是已经上线的应用,之前都会返回的,现在突然不返回了,难道改条件了?
回复 cyno1: 是,官方偷偷改了,真是狗
回复 1***@qq.com: 那要怎么改呢
回复 1***@qq.com: 我记得address 一直都需要三方定位SDK 的 为此还专门去申请的高德,不过今年全国地图供应商都该政策了需要收费了 就不用sdk 了
回复 DCMarvel: 之前就我这样子是可以调用返回的,地图key也配置过的,但是现在不返回了
回复 cyno1: 问:那要怎么改呢?答:指定 type 为 gcj02 并配置三方定位SDK
回复 1***@qq.com: 问:是,官方偷偷改了,真是狗?答:不是偷偷,更新日志增加说明并标记为重要,并且在所有QQ群里艾特了多次全体成员。
好 的
这个问题通常是由于高德地图服务端反地理编码失败导致的。当geocode: true时,uni-app会调用高德地图服务进行逆地理编码,但某些情况下可能无法返回地址信息。
主要排查方向:
- 网络问题:确保设备网络正常,能够访问高德地图服务
- 坐标精度:WGS84坐标在某些地区可能无法准确反解析出地址
- 服务限制:高德地图逆地理编码服务可能有调用频率或权限限制
- manifest配置:检查是否已正确配置高德地图key
建议解决方案:
// 1. 添加失败回调处理
uni.getLocation({
type: 'wgs84',
geocode: true,
success: function(res) {
if (res.address) {
console.log('地址信息:', res.address);
} else {
console.log('未获取到地址信息,使用默认处理');
// 这里可以添加降级处理逻辑
}
},
fail: function(err) {
console.error('获取位置失败:', err);
}
});
// 2. 尝试使用gcj02坐标系(国内推荐)
uni.getLocation({
type: 'gcj02', // 改用国测局坐标系
geocode: true,
success: function(res) {
console.log(res);
}
});
// 3. 单独调用逆地理编码API
uni.getLocation({
type: 'wgs84',
success: function(res) {
// 获取到坐标后,手动调用逆地理编码
uni.request({
url: 'https://restapi.amap.com/v3/geocode/regeo',
data: {
key: '你的高德地图key',
location: `${res.longitude},${res.latitude}`
},
success: function(addressRes) {
console.log('手动获取的地址:', addressRes);
}
});
}
});

