就是如下这个页面,在小程序内点击后进入这个页面,用户设置完定位授权后,返回小程序可以拿到授权结果。是拒绝还是同意,然后进行相应的操作
WXML:
<view class="btn tx-14" catchtap="getAddres">位置授权</view>
JS:
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'
});
}
}
});
},
扩展:选择使用时,就是仅限小程序在前台时有效,小程序目前处于运行中可获取到,切入后台后,在请求定位接口是无法成功的,第二种使用时或者离开后这个就不限制了,就比如用户小程序切入后台,只要还在运行,均可请求位置信息,这个常用于需要实时提交定位的场景,微信有提供两个接口获取定位,第一个是有时间限制的,另一个就是不限次数,不限制时间,设置一个间隔时间,每隔几秒会自动请求一次定位信息,而第一个接口如果这样做,返回的定位会不准确,具体的可以看官方文档哦!