首页 > 课堂 > 小程序 > 正文

微信小程序位置授权处理方法

2020-03-21 15:54:00
字体:
来源:转载
供稿:网友

这两天在做小程序调取地图的时候遇到一个问题,如果用户第一次拒绝了位置权限请求。那么就不会再次唤起授权弹出。需要我们引导用户去开启。

具体做法如下。 在 aap.json中加入授权配置

"permission": { "scope.userLocation": {  "desc": "你的位置信息将用于小程序位置接口的效果展示" } }

在 page页面中使用,需要有几个注意的地方,初次使用的时候,去申请权限。这里我是放在onShow 方法里面。

 onShow: function () { //初始获取定位权限 wx.authorize({  scope: 'scope.userLocation',  success: (res) => {  }, }) },

然后在调用地图地位。或者获取用户权限的函数去判断是否有定位权限,如果没有那么引导用户开启权限。 如下:我有一个Input去触发选择地图事件。

<input bindfocus="openMap" value='{{address}}' placeholder="点击选择详细地址"></input>

事件处理

 openMap:function(e){ var that = this wx.getSetting({  success(res){  //这里判断是否有地位权限   if (!res.authSetting['scope.userLocation']) {   wx.showModal({    title: '提示',    content: '请求获取位置权限',    success:function(res){    if(res.confirm==false){     return false;    }    wx.openSetting({     success(res) {     //如果再次拒绝则返回页面并提示     if (!res.authSetting['scope.userLocation']) {      wx.showToast({      title: '此功能需获取位置信息,请重新设置',      duration: 3000,      icon: 'none'      })     } else {      //允许授权,调用地图      that.chooseMap()     }     }    })    }   })    } else {   //如果有定位权限,调用地图   that.chooseMap()   }  } }) }, chooseMap(){ var that = this wx.chooseLocation({  success: function (res) {  that.setData({   address: res.address,   latitude: res.latitude,   longitude: res.longitude  })  },  fail: function (res) {  console.log(res)  } }) },

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对VEVB武林网的支持。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表