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

11 回复

文档中不是写着 仅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会调用高德地图服务进行逆地理编码,但某些情况下可能无法返回地址信息。

主要排查方向:

  1. 网络问题:确保设备网络正常,能够访问高德地图服务
  2. 坐标精度:WGS84坐标在某些地区可能无法准确反解析出地址
  3. 服务限制:高德地图逆地理编码服务可能有调用频率或权限限制
  4. 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);
            }
        });
    }
});
回到顶部