微信小程序获取地理位置及经纬度授权代码实例


Posted in Javascript onSeptember 18, 2019

这篇文章主要介绍了微信小程序获取地理位置及经纬度授权代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

微信小程序获取地理位置授权,首先需要在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)
        }
      }
    })
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 使用技巧精萃(.net html
Apr 25 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
Aug 13 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
Jan 24 Javascript
浅析tr的隐藏和显示问题
Mar 05 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
Mar 20 Javascript
一个仿糯米弹框效果demo
Jul 22 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
May 29 Javascript
jquery.serialize() 函数语法及简单实例
Jul 08 Javascript
vue组件父子间通信详解(三)
Nov 07 Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
JS实现倒计时图文效果
Nov 17 Javascript
layui复选框限制选择个数的方法
Sep 18 #Javascript
layui lay-verify form表单自定义验证规则详解
Sep 18 #Javascript
layui输入框只允许输入中文且判断长度的例子
Sep 18 #Javascript
Vue Components 数字键盘的实现
Sep 18 #Javascript
layui输入框中只允许输入整数的实现方法
Sep 18 #Javascript
layui富文本编辑器前端无法取值的解决方法
Sep 18 #Javascript
使用layui 的layedit定义自己的toolbar方法
Sep 18 #Javascript
You might like
laravel安装和配置教程
2014/10/29 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
php实现的生成排列算法示例
2019/07/25 PHP
jquery中动态效果小结
2010/12/16 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
Python break语句详解
2014/03/11 Python
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
详解Python中的多线程编程
2015/04/09 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
HEMA法国:荷兰原创设计
2019/02/21 全球购物
建筑工程技术应届生自荐信
2013/09/27 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
滞留工资返还协议书
2014/10/19 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
Python数组变形的几种实现方法
2022/05/30 Python