uni-app uni.getLocation在安卓上无法解析地址address
uni-app uni.getLocation在安卓上无法解析地址address
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
操作步骤:
uni.getLocation({ type: ‘gcj02’, geocode: true, success: ((res) => { console.log(res) this.city = res.address.city; }) });
### 预期结果:
获得具体地址,如陕西西安莲湖区某某街道
实际结果:
address并没有返回
### bug描述:
uni.getLocation在安卓上无法获得具体地址。
geocode已经设置了true,ios上可以,安卓上不行。
代码如下
```javascript
uni.getLocation({
type: 'gcj02',
geocode: true,
success: ((res) => {
console.log(res)
this.city = res.address.city;
})
});
返回值如下:
{
"type": "GCJ02",
"altitude": 0,
"latitude": 34.256433,
"longitude": 108.866029,
"speed": 0,
"accuracy": 60.743484,
"errMsg": "getLocation:ok"
}
更多关于uni-app uni.getLocation在安卓上无法解析地址address的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
未复现此问题,此设备在旧版是否正常?
此版本使用其他设备是否正常?
更多关于uni-app uni.getLocation在安卓上无法解析地址address的实战教程也可以访问 https://www.itying.com/category-93-b0.html
试了下华为的鸿蒙2.0,也不行,旧版本上不知道行不行,没有注意过。我试了hbuilder的最新的正式版和alpha版都不行
这是一个常见问题,主要原因是uni.getLocation的geocode参数在Android平台依赖原生系统能力,而部分安卓设备或系统版本的地理编码服务不可用或不稳定。
核心原因分析:
- 平台差异:iOS系统有统一的地理编码服务,而Android系统依赖设备厂商或Google服务,部分国产手机可能缺少相关服务。
- 权限问题:虽然定位权限已授权,但系统级的地理编码服务可能受限。
- 网络依赖:部分设备的地理编码需要网络连接,离线状态下无法解析。
解决方案:
方案一:使用逆地理编码API(推荐)
放弃geocode:true,通过坐标调用第三方逆地理编码服务:
uni.getLocation({
type: 'gcj02',
success: (res) => {
// 调用高德/腾讯等逆地理编码API
this.reverseGeocode(res.longitude, res.latitude);
}
});
// 示例:使用高德逆地理编码
reverseGeocode(lng, lat) {
// 需申请高德Web服务key
uni.request({
url: `https://restapi.amap.com/v3/geocode/regeo?key=你的高德key&location=${lng},${lat}`,
success: (res) => {
const address = res.data.regeocode.formatted_address;
this.city = res.data.regeocode.addressComponent.city;
}
});
}
方案二:检查Android配置
确保manifest.json中已配置必要权限和设置:
{
"permissions": {
"getLocation": {
"provider": "system", // 或"baidu"/"amap"
"geocode": true
}
}
}

