小程序判断用户是否授权位置信息
今天记录一下小程序中,用户是否授权位置信息的问题:
场景:当用户点击某个按钮的时候,需要先获取到用户的位置,然后再进行其他操作;果如用户拒绝了授权,当再次点击按钮的时候依然会弹起授权窗口;
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 })