就是如下这个页面,在小程序内点击后进入这个页面,用户设置完定位授权后,返回小程序可以拿到授权结果。是拒绝还是同意,然后进行相应的操作
<view class="btn tx-14" catchtap="getAddres">位置授权</view>
getAddres() { let that = this; wx.openSetting({ // 打开设置界面 success: res => { if (res.authSetting['scope.userLocation'] || res.authSetting['scope.userLocationBackground']) { // 授权成功,用户点击了使用时可获取或者使用时离开后都可获取 wx.getLocation({ // 获取用户定位,返回经纬度等信息 isHighAccuracy: true, type: 'gcj02', success: res => { let latitude = res.latitude let longitude = res.longitude let url = "https://api.map.baidu.com/geocoder/v2/"; let params = { ak: "h4uqXwClsa84XjNKvS4******", //免费去百度地图上申请一个 output: "json", location: latitude + "," + longitude } wx.request({ url: url, data: params, success: function (res1) { if (res1.errMsg == "request:ok") { // 获取位置信息成功 wx.setStorageSync('location', res1); wx.setStorageSync('openAdd', true); wx.showToast({ title: '授权成功', }) } else { wx.showToast({ title: '授权失败,请从新授权', icon: 'none' }) } }, }) } }) } else { // 没有允许定位权限 wx.showToast({ title: '您拒绝了定位权限,请从新授权', icon: 'none' }); } } }); },
扩展:选择使用时,就是仅限小程序在前台时有效,小程序目前处于运行中可获取到,切入后台后,在请求定位接口是无法成功的,第二种使用时或者离开后这个就不限制了,就比如用户小程序切入后台,只要还在运行,均可请求位置信息,这个常用于需要实时提交定位的场景,微信有提供两个接口获取定位,第一个是有时间限制的,另一个就是不限次数,不限制时间,设置一个间隔时间,每隔几秒会自动请求一次定位信息,而第一个接口如果这样做,返回的定位会不准确,具体的可以看官方文档哦!