小程序判断用户是否授权位置信息

今天记录一下小程序中,用户是否授权位置信息的问题:

场景:当用户点击某个按钮的时候,需要先获取到用户的位置,然后再进行其他操作;果如用户拒绝了授权,当再次点击按钮的时候依然会弹起授权窗口;

 1 // index/index.js
 2 Page({
 3     data: {
 4         latitude: '',    //纬度
 5         longitude: '',  //经度
 6         address: '',    //地址
 7     },
 8 
 9   /**
10    * 点击打卡
11    */
12   signInClick(e) {
13       // 判断用户是否授权,里面会调用打卡接口
14       this.isGetSetting()
15   },
16 
17       /**
18    * 判断用户是否授权
19    */
20   isGetSetting() {
21     // 判断用户是否授权
22     wx.getSetting({
23       success: (res) => {
24         var statu = res.authSetting;
25         if (!statu['scope.userLocation']) { //没授权
26           wx.showModal({
27             title: '是否授权当前位置',
28             content: '需要获取您的地理位置,请确认授权',
29             confirmColor: '#f16765',
30             success: res => {
31               if (res.confirm) {
32                 wx.openSetting({
33                   success: data => {
34                     if (data.authSetting["scope.userLocation"]) {
35                       // 调用百度地图,获取位置信息(就是经纬度转换成地址)
36                       this.bdMap()
37                     }
38                   }
39                 })
40               }
41             }
42           })
43         } else { //已授权
44             //做一些事情...
45             
46         }
47       }
48     })
49   },
50 
51   /**
52    * 百度API封装,用于获取用户位置
    * 如果要使用百度地图获取具体位置,申请完key以后,需要在小程序后台配置百度域名https://api.map.baidu.com
53 */ 54 bdMap() { 55 // 调用百度地图api 56 var Bmap = new bmap.BMapWX({ 57 ak: 'IhgcYGTwAWc2xxxxxxxxxxxxx' //这个ak需要在百度地图开放平台根据小程序的AppID申请 58 }); 59 // 进行regeocoding检索,根据经纬度获得对应的地理描述信息 60 Bmap.regeocoding({ 61 success: res => { 62 var _data = res.wxMarkerData; 63 this.setData({ 64 latitude: _data[0].latitude, 65 longitude: _data[0].longitude, 66 address: _data[0].address + _data[0].desc, 67 }) 68 // 做一些事情.... 69 70 }, 71 fail: res => { 72 wx.showToast({ 73 title: '您拒绝了授权,XX功能将无法使用', 74 icon: 'none', 75 duration: 3000 76 }) 77 } 78 }) 79 }, 80 81 })

 

posted @ 2020-02-20 15:27  认真,是一种态度  阅读(4295)  评论(0编辑  收藏  举报