昨天小程序遇到了一个坑,坑的我浪费了2个小时加班也没查出来,百度,google都没有,社区提问今天反馈也没出来结果,代码很简单,几乎是微信官方文档源代码,没对api进行从任何操作
场景:老板的mate10在应该触发wx.getLocation接口弹出请求允许获取对话框的情况下没有成功,直接fail,返回信息fail:invalid data
代码:
onShow: function() {
console.log('进入show')
if (!wx.getStorageSync('city')){
console.log('城市不存在')
this.getAddress();
}
this.getAllList();
},
//获取地址
getAddress() {
var that = this;
//1、获取当前位置坐标
wx.getLocation({
'type': 'wgs84',
success: function(res) {
console.log('wgs84 ')
//2、根据坐标获取当前位置名称,显示在顶部:腾讯地图逆地址解析
qqmapsdk.reverseGeocoder({
location: {
latitude: res.latitude,
longitude: res.longitude
},
success: function(addressRes) {
console.log('获取位置成功')
var address = addressRes.result.ad_info.city;
var cityCode = addressRes.result.ad_info.city_code;
that.setData({
city: address,
cityCode: cityCode,
})
wx.setStorage({
key: 'city',
data: address,
success: function(res) {
console.log('设置位置成功')
}
})
wx.setStorage({
key: 'cityCode',
data: cityCode,
success: function(res) {
console.log(res)
}
})
console.log(that.addressNow);
}
})
},
cancel: function (res) {
console.log('wgs84cacel',res);
},
fail: function (res) {
//返回fail:invalid data
console.log('wgs84fail',res);
}
})
},
success里面是反解析 不用看了,没有运行,直接运行了fail 返回了fail:invalid data。
查不到这个报错提示,虽然翻译过来时‘错误的数据’,但是该api是官方提供,且只传了一个type:‘wgs84’,
最后想到一个办法
fail: function (res) {
console.log('wgs84fail', res);
//被拒绝再次拉去请求
wx.authorize({ scope: "scope.userLocation" })
}
关键的转折来了……,我将代码部署之后测试解决了,但是我发现我部署代码的时候把wx.authorize({ scope: “scope.userLocation” })注释掉了……,也就是这个方法我一点也没改动……但是解决了…… 未解之谜
---------------------
from:https://blog.csdn.net/weixin_42275932/article/details/81947190