时间:2019-05-04 来源:小程序工厂
wx.getLocation()是获取用户地址信息,没授权就会弹出授权框;
wx.getSetting()是获取用户授权状态;
wx.openSetting()是跳转至授权页面。
你自己先搞清楚微信API的含义
了解,非常感谢
问题是啥。。你没说
点击签到的时候,会先跳出第一张图,返回后才会出现第二张图,不知道为啥会出现扯个原因
你把getSetting部分整个去掉
去掉之后,用户拒绝就没法再签到了,我之前就是这么写的,现在是处理拒绝之后的情况的
用 wx.authorize
我试试
顺序要改下,先授权,再调getLocation
sign: function () {
var that = this
const la1 = 31.991362
const lo1 = 118.737908
wx.getSetting({
success:function(res){
if (!res.authSetting['scope.userLocation'])[
wx.authorize({
scope: 'scope.userLocation',
success(){
wx.getLocation({
type: 'gcj02',
success: function (res) {
const la2 = res.latitude
const lo2 = res.longitude
var La1 = la1 * Math.PI / 180.0;
var La2 = la2 * Math.PI / 180.0;
var La3 = La1 - La2;
var Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0;
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2) + Math.cos(La1) * Math.cos(La2) * Math.pow(Math.sin(Lb3 / 2), 2)));
s = s * 6378.137;//地球半径
s = Math.round(s * 10000) / 10000;
if (s > 0.2) {
wx.showToast({
title: '距离不够' + s,
icon: 'none'
})
console.log("距离不够" + s)
} else {
wx.showToast({
title: '签到成功',
icon: 'success'
})
console.log("sssssssss===" + s)
}
}
})
}
})
]
}
})
}
这样改还是不行,拒绝之后再点签到没反应了,哪里写错了吗
哦!我理解你的意思了。。
你应该这么写,默认这个按钮是响应的 wx.getLocation。。如果进了fail分支,就让界面显示 openSettings 的按钮,然后授权回来之后,再重新改成响应 wx.getLocation的按钮
// fail:function(){
// wx.showModal({
// title: '确认授权',
// content: '需要获取您的位置',
// success:function(res){
// if(res.confirm){
// wx.getSetting({
// success:function(res){
// if (!res.authSetting["scope.userLocation"]){
// wx.openSetting({
// success: function (res) {
// if (res.authSetting["scope.userLocation"]) {
// wx.showToast({
// title: '授权成功',
// icon: 'success',
// duration: 1000
// })
// }
// }
// })
// }