小程序获取定位扫码打卡功能

app.json

"permission": {
   "scope.userLocation": {
      "desc": "你的位置信息将用于小程序定位"
   }
},
<view bindtap="onClockIn">view>
// 扫码打卡
  onClockIn() {
    let vm = this
    wx.getSetting({
      success(res) {
        // res.authSetting['scope.userLocation'] == undefined    表示 初始化进入该页面
        // res.authSetting['scope.userLocation'] == false    表示 非初始化进入该页面,且未授权
        // res.authSetting['scope.userLocation'] == true    表示 地理位置授权
        if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
          wx.showModal({
            title: '请求授权当前位置',
            content: '需要获取您的地理位置,请确认授权',
            success: function (res) {
              if (res.cancel) {
                wx.showToast({
                  title: '拒绝授权',
                  icon: 'none',
                  duration: 1000
                })
              } else if (res.confirm) {
                vm.getLocation()
              }
            }
          })
        }else {
          // 存在就直接调扫码
          vm.getLocation()
        }
      }
    })
  },

  // 授权定位权限
  getLocation() {
    let that = this
    wx.getLocation({
      type: 'wgs84',
      success: function (res) {
        let obj = {
          latitude: res.latitude,
          longitude: res.longitude
        }
        wx.showToast({
          title: '授权成功',
          icon: 'success',
          duration: 1000
        })
        // 储存地址
        wx.setStorageSync('location', obj)
        that.getcode(obj)
      },
      fail: function (error) {
        console.log(error, 'error');
      }
    })
  },

  // 扫码
  getcode(obj) {
    console.log('扫码');
    wx.scanCode({ //扫描API
      success: function (res) {
        _request.POST("扫码成功后请求接口", {
          params: {
            Id: res.result, // 扫码成功后需要携带的值
            ...obj
          },
          success: function success(res) {
            if (res.data.code === 200) {
              const data = res.data.data
              // 根据个人业务判断
              if (!data.isSatisfyDistance && data.id == 0) {
                wx.showToast({
                  title: "不在1000米打卡范围以内",
                  icon: "none"
                });
              } else {
                wx.showToast({
                  title: res.message,
                  icon: "none"
                });
                wx.navigateTo({
                  url: "打卡成功跳转页面" + JSON.stringify(res.data.data),
                })
              }
            } else {
            }
          },
          fail: function fail(error) {
            console.log(error);
          }
        });
      },
      fail: function (error) {
        console.log(error, 'error'); //输出回调信息
      },
    })
  },

你可能感兴趣的:(小程序,JS,定位,前端)