uni-app 3.3.13.20220314真机调试 位置信息无法读取address
uni-app 3.3.13.20220314真机调试 位置信息无法读取address
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
HBuilderX | 3.3.13 | 云端 |
产品分类:HTML5+
手机系统:Android
手机系统版本号:Android 11
手机厂商:魅族
手机机型:魅族18
打包方式:云端
示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geolocation Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener('plusready', onPlusReady, false);
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady(){
plus.geolocation.getCurrentPosition(function(p){
alert('Geolocation\nLatitude:' + p.coords.latitude + '\nLongitude:' + p.coords.longitude + '\nAltitude:' + p.coords.altitude);
alert('\ncity'+p.address.city)
}, function(e){
alert('Geolocation error: ' + e.message);
} );
}
</script>
</head>
<body >
</body>
</html>
操作步骤:
使用示例代码无误,一旦想取地址信息就出错。alert('\ncity'+p.address.city)
云打包无错误提示。
预期结果:
取得city值
实际结果:
真机官方底座调试提示TypeError: Cannot read properties of undefined (reading ‘city’)
bug描述:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geolocation Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener('plusready', onPlusReady, false);
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady(){
plus.geolocation.getCurrentPosition(function(p){
alert('Geolocation\nLatitude:' + p.coords.latitude + '\nLongitude:' + p.coords.longitude + '\nAltitude:' + p.coords.altitude);
alert('\ncity'+p.address.city)
}, function(e){
alert('Geolocation error: ' + e.message);
} );
}
</script>
</head>
<body >
</body>
</html>
3 回复
配置key
配置过的。以前好好的,更新到最新的HBX版本就不行了。
在 uni-app
中进行真机调试时,如果遇到位置信息无法读取 address
的问题,可能是由于以下几个原因导致的。以下是一些排查和解决方法:
1. 权限问题
- 描述: 应用可能没有获取位置信息的权限。
- 解决方法:
- 确保在
manifest.json
中已经配置了位置权限:{ "permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } } }
- 在真机上检查应用的权限设置,确保已经允许应用访问位置信息。
- 确保在
2. API 使用问题
- 描述: 可能在使用
uni.getLocation
或uni.chooseLocation
时,没有正确处理返回的数据。 - 解决方法:
- 确保正确调用
uni.getLocation
或uni.chooseLocation
,并处理返回的数据:uni.getLocation({ type: 'wgs84', success: function (res) { console.log('经度:' + res.longitude); console.log('纬度:' + res.latitude); // 如果需要获取地址信息,可以使用逆地理编码 API uni.request({ url: 'https://restapi.amap.com/v3/geocode/regeo', data: { key: '你的高德地图API Key', location: res.longitude + ',' + res.latitude }, success: function (res) { console.log('地址信息:', res.data.regeocode.formatted_address); } }); }, fail: function (err) { console.log('获取位置信息失败:', err); } });
- 确保正确调用
3. 高德地图或腾讯地图 API Key 问题
- 描述: 如果使用高德地图或腾讯地图的逆地理编码服务,可能需要配置正确的 API Key。
- 解决方法:
- 确保在
manifest.json
中配置了正确的高德地图或腾讯地图的 API Key:{ "mp-weixin": { "appid": "你的小程序AppID", "setting": { "urlCheck": false, "es6": true, "postcss": true, "minified": true }, "permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } }, "plugins": { "chooseLocation": { "version": "1.0.6", "provider": "wx76a9a06e5b4e693e" } }, "requiredPrivateInfos": [ "getLocation", "chooseLocation" ], "sdkConfigs": { "geolocation": { "provider": "amap", "key": "你的高德地图API Key" } } } }
- 确保在