uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition 获取不到 addresses
uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition 获取不到 addresses
用前一版本 3.2.16.20211122 这里是正常的
更多关于uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition 获取不到 addresses的实战教程也可以访问 https://www.itying.com/category-93-b0.html
操作步骤:
1、hbuilderx 更新到 3.3.5.20211229;
2、5+项目调 plus.geolocation.watchPosition
预期结果:
{“coordsType”:“gcj02”,“address”:{“country”:“中国”,“province”:“北京市”,“city”:“北京市”,“district”:“朝阳区”,“street”:“朝外南街”,“streetNum”:“22号”,“poiName”:"《财经》杂志",“cityCode”:“010”},“addresses”:“北京市朝阳区朝外南街22号”,“coords”:{“latitude”:39.922613,“longitude”:116.439224,“accuracy”:36,“altitude”:0,“heading”:null,“speed”:0,“altitudeAccuracy”:0},“timestamp”:1641882328483}
实际结果:
{“coordsType”:“wgs84”,“coords”:{“latitude”:39.922322,“longitude”:116.433049,“accuracy”:112.787048,“altitude”:0,“heading”:null,“speed”:0,“altitudeAccuracy”:0},“timestamp”:null}
bug描述:
更新到 3.3.5.20211229;
5+项目调 plus.geolocation.watchPosition 获取不到 addresses (String 完整地址描述信息);
在 uni-app 3.3 版本中,plus.geolocation.getCurrentPosition 获取不到 addresses 的问题,通常是由于权限配置或 API 调用方式调整导致的。以下是排查和解决步骤:
-
检查 manifest.json 配置
确保在manifest.json的App模块配置中勾选了Geolocation(定位)模块,并正确配置了高德或百度等地图 SDK 的 AppKey(国内常用高德)。{ "modules": { "Geolocation": {} }, "distribute": { "sdkConfigs": { "geolocation": { "amap": { "appkey_ios": "你的iOS高德Key", "appkey_android": "你的Android高德Key" } } } } } -
确认权限声明
- iOS:在
manifest.json的App权限配置中填写NSLocationWhenInUseUsageDescription(使用期间定位权限说明)。 - Android:确保已自动添加定位权限,无需手动配置。
- iOS:在
-
代码调用调整
uni-app 3.3 可能强化了异步处理,建议在调用时增加错误捕获,并确认返回结构:plus.geolocation.getCurrentPosition( (position) => { console.log('定位数据:', position); // 检查是否有 addresses 字段 console.log('详细地址:', position.addresses); // 如无数据,可能需单独调用逆地理编码 }, (error) => { console.error('定位失败:', error.message); }, { provider: 'amap', enableHighAccuracy: true } // 指定高德地图提供方 ); -
使用逆地理编码补全地址
如果addresses仍为空,可能是网络或服务限制,可尝试调用高德逆地理编码 API 手动获取地址:// 通过经纬度调用高德逆地理编码服务(需自行封装请求) // 示例:https://restapi.amap.com/v3/geocode/regeo?key=你的Key&location=经度,纬度

