微信小程序出现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 相关文章推荐
jquery 跨域访问问题解决方法(笔记)
Jun 08 Javascript
Extjs4中的分页应用结合前后台
Dec 13 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
实例讲解JQuery中this和$(this)区别
Dec 08 Javascript
jQuery表单美化插件jqTransform使用详解
Apr 12 Javascript
浅谈javascript中的闭包
May 13 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
Dec 05 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
Sep 27 Javascript
使用vuepress搭建静态博客的示例代码
Feb 14 Javascript
微信小程序使用蓝牙小插件
Sep 23 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 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 DataGrid 实现代码
2009/08/12 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
Js四则运算函数代码
2012/07/21 Javascript
javascript的push使用指南
2014/12/05 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
详解Python中的__new__()方法的使用
2015/04/09 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
小学家长会邀请函
2014/01/23 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
座谈会主持词
2014/03/20 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python