1、上图:
微信图片_20190814101420.png
2、问题:项目现这个BUG,仔细核查代码也并未发现错误,最终仔细阅读微信开发文档后,发现有漏配置的项。
3、根本原因是在处理授权操作后,并没有在app.json中配置关于地理位置的用途说明字段,如:
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示" // 高速公路行驶持续后台定位
}
}
image.png
4、js中操作地图选择前配置的权限代码如下(程序中使用该api,用户首次调用会提示是否获取权限,前提就是要在app.json中配置,如果不配置,就会出现该bug。至于在提示窗口选择取消后,后续的处理授权工作则在fail的回调函数中做处理):
wx.chooseLocation({
success(res) {
wx.showLoading({
title: '地图询价中……',
mask:true
})
var districtName = res.name;
var detailAddress = res.address;
var latitude = res.latitude;
var longitude = res.longitude;
///console.log("districtName:"+districtName)
// 将BMap坐标转换为GCJ02坐标
var result = gcoord.transform([longitude, latitude], gcoord.GCJ02, gcoord.BMap);
longitude = result[0];
latitude = result[1];
var url = "bmapEnquiry";
that.setData({
["entrustObject.estatename"]:districtName
});
var QRdata = {};
QRdata.lng = longitude;
QRdata.lat = latitude;
var res = urls.urls(url, QRdata, that.bMapSuccessed, that.bMapfailed);
},
fail: function (res) {
wx.getSetting({
success: function (res) {
var statu = res.authSetting;
if (!statu['scope.userLocation']) {
wx.showModal({
title: '是否授权当前位置',
content: '需要获取您的地理位置,请确认授权,否则地图功能将无法使用',
success: function (tip) {
if (tip.confirm) {
wx.openSetting({
success: function (data) {
if (data.authSetting["scope.userLocation"] === true) {
wx.showToast({
title: '授权成功',
icon: 'success',
duration: 1000
})
//授权成功之后,再调用chooseLocation选择地方
}
})
} else {
wx.showToast({
title: '授权失败',
icon: 'none',
duration: 1000
})
}
}
})
}
}
})
}
},
fail: function (res) {
wx.showToast({
title: '调用授权窗口失败',
icon: 'none',
duration: 1000
})
}
})
网友评论