• 微信小程序获取地理位置授权


    微信小程序获取地理位置授权,首先需要在app.json中添加配置:

    "permission": {
        "scope.userLocation": {
          "desc": "请确认授权"
        }
      }

    获取经纬度:如果手机未开启位置信息,那么授权成功后在wx.getLocation()方法中也会一直失败,所以需要在fail方法中提示用户开启手机位置信息

    getUserLocation: function () {
            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) {
                        // console.log('authSetting:status:拒绝授权后再次进入重新授权', res.authSetting['scope.userLocation'])
                        wx.showModal({
                            title: '',
                            content: '【泰福利Lite】需要获取你的地理位置,请确认授权',
                            success: function (res) {
                                if (res.cancel) {
                                    wx.showToast({
                                        title: '拒绝授权',
                                        icon: 'none'
                                    })
                                    setTimeout(() => {
                                        wx.navigateBack()
                                    }, 1500)
                                } else if (res.confirm) {
                                    wx.openSetting({
                                        success: function (dataAu) {
                                            // console.log('dataAu:success', dataAu)
                                            if (dataAu.authSetting["scope.userLocation"] == true) {
                                                //再次授权,调用wx.getLocation的API
                                                vm.getLocation(dataAu)
                                            } else {
                                                wx.showToast({
                                                    title: '授权失败',
                                                    icon: 'none'
                                                })
                                                setTimeout(() => {
                                                    wx.navigateBack()
                                                }, 1500)
                                            }
                                        }
                                    })
                                }
                            }
                        })
                    }
                    // 初始化进入,未授权
                    else if (res.authSetting['scope.userLocation'] == undefined) {
                        // console.log('authSetting:status:初始化进入,未授权', res.authSetting['scope.userLocation'])
                        //调用wx.getLocation的API
                        vm.getLocation(res)
                    }
                    // 已授权
                    else if (res.authSetting['scope.userLocation']) {
                        // console.log('authSetting:status:已授权', res.authSetting['scope.userLocation'])
                        //调用wx.getLocation的API
                        vm.getLocation(res)
                    }
                }
            })
        },
        // 微信获得经纬度
        getLocation: function (userLocation) {
            let vm = this
            wx.getLocation({
                type: "wgs84",
                success: function (res) {
                    // console.log('getLocation:success', res)
                    var latitude = res.latitude
                    var longitude = res.longitude
                    vm.getDaiShu(latitude, longitude)
                },
                fail: function (res) {
                    // console.log('getLocation:fail', res)
                    if (res.errMsg === 'getLocation:fail:auth denied') {
                        wx.showToast({
                            title: '拒绝授权',
                            icon: 'none'
                        })
                        setTimeout(() => {
                            wx.navigateBack()
                        }, 1500)
                        return
                    }
                    if (!userLocation || !userLocation.authSetting['scope.userLocation']) {
                        vm.getUserLocation()
                    } else if (userLocation.authSetting['scope.userLocation']) {
                        wx.showModal({
                            title: '',
                            content: '请在系统设置中打开定位服务',
                            showCancel: false,
                            success: result => {
                                if (result.confirm) {
                                    wx.navigateBack()
                                }
                            }
                        })
                    } else {
                        wx.showToast({
                            title: '授权失败',
                            icon: 'none'
                        })
                        setTimeout(() => {
                            wx.navigateBack()
                        }, 1500)
                    }
                }
            })
        }
  • 相关阅读:
    Beta冲刺 5
    Beta冲刺 4
    Beta冲刺 3
    Beta冲刺 2
    Beta冲刺 1
    项目评测博客
    Beta冲刺前准备
    Alpha 冲刺11——总结
    Alpha冲刺10
    Alpha冲刺9
  • 原文地址:https://www.cnblogs.com/memphis-f/p/11535970.html
Copyright © 2020-2023  润新知