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 //获取位置信息的间隔时间  
});

操作步骤:

  1. hbuilderx 更新到 3.3.10.20220124;
  2. 标准基座,5+项目,调 plus.geolocation.getCurrentPositionplus.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描述:

  1. hbuilderx 更新到 3.3.10.20220124;
  2. 标准基座,5+项目,调 plus.geolocation.getCurrentPositionplus.geolocation.watchPosition
  3. 返回结果缺少 addressaddresses 注:3.2.16.20211122版调该方法返回正常

相关链接 :


更多关于uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition/watchPosition 获取不到 address和addresses的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

受高德商业授权影响,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


感谢答复!再次测试结果如下: 1、hbuilderx 更新到 3.3.11.20220209; 2、manifest模块配置,定位、地图都设置为高德; 3、制作自定义调试基座; 4、自定义调试基座,5+项目,调 plus.geolocation.getCurrentPosition 或 plus.geolocation.watchPosition; 5、返回结果缺少 address 和 addresses 注:方法参数增加 provider:‘amap’ 后返回正常

那为什么苹果端,provider使用system时依然可以获取地址信息?

回复 z***@aliyun.com: 默认使用系统定义,系统定位不支持返回地址信息

这是一个已知的bug,在HBuilderX 3.3.10版本中确实存在这个问题。定位服务返回的Position对象缺少address和addresses属性。

建议的临时解决方案:

  1. 回退到3.2.16版本
  2. 或者手动通过坐标调用逆地理编码API来获取地址信息

开发团队已经确认这个问题,预计会在后续版本修复。你可以关注DCloud官方论坛或更新日志获取修复进度。

如果需要立即获取地址信息,可以使用plus.geolocation.reverseGeocode方法进行坐标反查:

plus.geolocation.reverseGeocode({
    coordsType: 'gcj02',
    point: {lat: latitude, lng: longitude}
}, function(result){
    console.log(JSON.stringify(result));
});
回到顶部