微信小程序出现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 数组运用实现代码
Apr 13 Javascript
Jquery知识点三 jquery表单对象操作
Jan 17 Javascript
js 日期比较相关天数代码
Apr 02 Javascript
dreamweaver 8实现Jquery自动提示
Dec 04 Javascript
jquery获取当前元素索引值用法实例
Jun 10 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
Dec 02 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
详解angularjs跨页面传参遇到的一些问题
Nov 01 Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 Javascript
Vue实现开关按钮拖拽效果
Sep 22 Javascript
解决Antd Table表头加Icon和气泡提示的坑
Nov 17 Javascript
vue实现表格合并功能
Dec 01 Vue.js
在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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
把PHP安装为Apache DSO
2006/10/09 PHP
PHP nl2br函数 将换行字符转成 <br>
2009/08/21 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
[48:00]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第二场 11.04
2020/11/04 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
电大自我鉴定
2013/10/27 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
企业口号大全
2014/06/12 职场文书
单位授权委托书范本
2014/09/26 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
客户付款通知书
2015/04/23 职场文书
网吧员工管理制度
2015/08/05 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书
Python django中如何使用restful框架
2021/06/23 Python