微信小程序打开授权位置信息界面,拒绝授权后用户手动点击后打开
发布于 3 年前 作者 lei03 4457 次浏览 来自 分享

就是如下这个页面,在小程序内点击后进入这个页面,用户设置完定位授权后,返回小程序可以拿到授权结果。是拒绝还是同意,然后进行相应的操作

WXML:

位置授权

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'
          });
        }
      }
    });
  },

扩展:选择使用时,就是仅限小程序在前台时有效,小程序目前处于运行中可获取到,切入后台后,在请求定位接口是无法成功的,第二种使用时或者离开后这个就不限制了,就比如用户小程序切入后台,只要还在运行,均可请求位置信息,这个常用于需要实时提交定位的场景,微信有提供两个接口获取定位,第一个是有时间限制的,另一个就是不限次数,不限制时间,设置一个间隔时间,每隔几秒会自动请求一次定位信息,而第一个接口如果这样做,返回的定位会不准确,具体的可以看官方文档哦!

回到顶部