uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition/watchPosition 获取不到 address和addresses
uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition/watchPosition 获取不到 address和addresses
示例代码:
plus.geolocation.watchPosition(function(p) { //监听设备位置变化信息
console.log(JSON.stringify(p));
}, function(e) { //获取设备位置信息失败回调函数
console.log(e.message);
}, {
maximumAge: 60000 //获取位置信息的间隔时间
});
操作步骤:
- hbuilderx 更新到 3.3.10.20220124;
- 标准基座,5+项目,调
plus.geolocation.getCurrentPosition
或plus.geolocation.watchPosition
预期结果:
成功回调后返回结果,Position对象包含5项属性
Position {
readonly attribute Coordinates coords;
readonly attribute String coordsType;
readonly attribute Number timestamp;
readonly attribute Address address;
readonly attribute String addresses;
}
实际结果:
{
"coordsType":"wgs84",
"coords":{
"latitude":39.881072,
"longitude":116.449973,
"accuracy":63.128029,
"altitude":0,
"heading":null,
"speed":0,
"altitudeAccuracy":0
},
"timestamp":null
}
缺少2项属性:
readonly attribute Address address;
readonly attribute String addresses;
bug描述:
- hbuilderx 更新到 3.3.10.20220124;
- 标准基座,5+项目,调
plus.geolocation.getCurrentPosition
或plus.geolocation.watchPosition
- 返回结果缺少
address
和addresses
注:3.2.16.20211122版调该方法返回正常
相关链接 :
更多关于uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition/watchPosition 获取不到 address和addresses的实战教程也可以访问 https://www.itying.com/category-93-b0.html
受高德商业授权影响,HBuilderX3.3.0+版本标准真机运行基座调整默认使用系统定位模块,如果要获取位置信息,请指定使用高德定位模块,如下示例:
plus.geolocation.PositionOptions(function(){}, function(){}, {provider:‘amap’});
注意:云端打包需在“App模块配置”中勾选“高德定位”
更多关于uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition/watchPosition 获取不到 address和addresses的实战教程也可以访问 https://www.itying.com/category-93-b0.html
那为什么苹果端,provider使用system时依然可以获取地址信息?
回复 z***@aliyun.com: 默认使用系统定义,系统定位不支持返回地址信息
这是一个已知的bug,在HBuilderX 3.3.10版本中确实存在这个问题。定位服务返回的Position对象缺少address和addresses属性。
建议的临时解决方案:
- 回退到3.2.16版本
- 或者手动通过坐标调用逆地理编码API来获取地址信息
开发团队已经确认这个问题,预计会在后续版本修复。你可以关注DCloud官方论坛或更新日志获取修复进度。
如果需要立即获取地址信息,可以使用plus.geolocation.reverseGeocode方法进行坐标反查:
plus.geolocation.reverseGeocode({
coordsType: 'gcj02',
point: {lat: latitude, lng: longitude}
}, function(result){
console.log(JSON.stringify(result));
});