微信小程序出现wx.getLocation再次授权问题的解决方法分析


Posted in Javascript onJanuary 16, 2019

本文实例讲述了微信小程序出现wx.getLocation再次授权问题的解决方法。分享给大家供大家参考,具体如下:

首先,在page外定义一个公共函数用于发送获取位置的请求

var getLocation = function (that) {
 wx.getLocation({
  type: 'wgs84',
  success: function (res) {
   // 经纬度
   var latitude = res.latitude
   var longitude = res.longitude
   var aK = that.data.aK
   wx.request({
    url: 'https://api.map.baidu.com/geocoder/v2/?ak=' + aK + '&location=' + latitude + ',' + longitude + '&output=json',
    data: {},
    header: {
     'content-type': 'application/json'
    },
    success: function (res) {
     var city = res.data.result.addressComponent.city;
     that.setData({
      currentCity: city
     })
     wx.request({
      url: 'xxx' + city,
      data: {},
      header: {
       'content-type': 'application/json'
      },
      success: function (res) {
       that.setData({
        county: res.data,
       })
      },
     })
    }
   })
  },
  fail: function () {
   wx.showToast({
    title: '授权失败',
    icon: 'success',
    duration: 1000
   })
  }
 })
}

然后,在page中需要位置调用page外部的getLocation 函数

wx.getSetting({
    success: (res) => {
     if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {//非初始化进入该页面,且未授权
      wx.showModal({
       title: '是否授权当前位置',
       content: '需要获取您的地理位置,请确认授权,否则无法获取您所需数据',
       success: function (res) {
        if (res.cancel) {
         that.setData({
          isshowCIty: false
         })
         wx.showToast({
          title: '授权失败',
          icon: 'success',
          duration: 1000
         })
        } else if (res.confirm) {
         wx.openSetting({
          success: function (dataAu) {
           if (dataAu.authSetting["scope.userLocation"] == true) {
            wx.showToast({
             title: '授权成功',
             icon: 'success',
             duration: 1000
            })
            //再次授权,调用getLocationt的API
            getLocation(that);
           } else {
            wx.showToast({
             title: '授权失败',
             icon: 'success',
             duration: 1000
            })
           }
          }
         })
        }
       }
      })
     } else if (res.authSetting['scope.userLocation'] == undefined) {//初始化进入
      getLocation(that);
     }
     else { //授权后默认加载
      getLocation(that);
     }
    }
})

上述过程执行顺序为:

1.先加载wx.getLocation弹出自己的授权框,如图

微信小程序出现wx.getLocation再次授权问题的解决方法分析

然后,点击确定即可授权,若点击取消则取消授权,当再次需要授权时,会调用我们自定义的Modal框,如图

微信小程序出现wx.getLocation再次授权问题的解决方法分析

其次,针对上述的Modal框点击取消则关闭,若点击确定则打开手机的地址授权设置,如图

微信小程序出现wx.getLocation再次授权问题的解决方法分析

最后,若直接点击左上方的返回箭头则取消授权,若先选中地理位置按钮,然后在点击左上方的返回箭头则授权成功,如图

微信小程序出现wx.getLocation再次授权问题的解决方法分析

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
javascript自执行函数之伪命名空间封装法
Dec 25 Javascript
使用jquery mobile做幻灯播放效果实现步骤
Jan 04 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
JavaScript中的alert()函数使用技巧详解
Dec 29 Javascript
js限制文本框的输入内容代码分享(3类)
Aug 20 Javascript
Angular.js中定时器循环的3种方法总结
Apr 27 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
Mar 20 Javascript
AngularJS自定义过滤器用法经典实例总结
May 17 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 Javascript
详解如何使用router-link对象方式传递参数?
May 02 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
使用axios请求时,发送formData请求的示例
Oct 29 Javascript
在Create React App中启用Sass和Less的方法示例
Jan 16 #Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 #Javascript
Vue 样式绑定的实现方法
Jan 15 #Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 #Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
Jan 15 #Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 #Javascript
详解webpack引入第三方库的方式以及注意事项
Jan 15 #Javascript
You might like
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python描述器descriptor详解
2015/02/03 Python
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python3读取zip文件信息的方法
2015/05/22 Python
python基于SMTP协议发送邮件
2019/05/31 Python
Python post请求实现代码实例
2020/02/28 Python
python连接mysql有哪些方法
2020/06/24 Python
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
中学生在校期间的自我评价分享
2013/11/13 职场文书
公司同意接收函
2014/01/13 职场文书
公司庆典邀请函范文
2014/01/13 职场文书
新书吧创业计划书
2014/01/31 职场文书
县级文明单位申报材料
2014/05/23 职场文书
幼儿园标语大全
2014/06/19 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
保密工作整改报告
2014/11/06 职场文书
中层干部考核评语
2015/01/04 职场文书
长城英文导游词
2015/01/30 职场文书
大学生支教感言
2015/08/01 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书