小程序中要想获取用户的位置,是需要用户授权的。
本来以为位置授权和信息授权是一样的,使用button主动触发,设置button的open-type的值。然后去微信开放文档看了下,并没有相关的值。
那怎么办呢,只有换一种方法,小程序提供了一个打开授权设置的API:wx.openSetting。
wx.openSetting({
success: function(res) {
if (res.authSetting['scope.userLocation'] == true) {
wx.showToast({
title: '授权成功',
icon: 'success',
duration: 1000
});
//再次授权,调用wx.getLocation的API
// _this.geo();
} else {
wx.showToast({
title: '授权失败',
icon: 'none',
duration: 1000
});
}
}
});
然后在手机上测试了一下是可以实现授权的
但是当我所添加的体验者微信中测试时,的确可以弹出上面这个窗口,可是并没有“位置信息”这一设置选项,只有“用户信息”这一设置项。我使用wx.getSetting方法输出了一下返回结果,在authSetting对象中没有userLocation这个key值。
经过了各种尝试,到处查找资料要使用如下的API进行设置
wx.authorize({
scope: 'scope.userLocation'
});
还没完,单纯的这样还是不行,必须要在app.js中添加全局配置,这一点在微信开放文档中是提到了的。https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
}
}z