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


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 相关文章推荐
js类式继承的具体实现方法
Dec 31 Javascript
表单提交前触发函数返回true表单才会提交
Mar 11 Javascript
原生javascript实现简单的datagrid数据表格
Jan 02 Javascript
JavaScript中用toString()方法返回时间为字符串
Jun 12 Javascript
深入剖析JavaScript编程中的对象概念
Oct 21 Javascript
Node.js复制文件的方法示例
Dec 29 Javascript
AngularJS实现select的ng-options功能示例
Jul 12 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
Jul 24 Javascript
ionic2懒加载配置详解
Sep 01 Javascript
vue实现购物车小案例
Sep 27 Javascript
vue学习笔记之slot插槽用法实例分析
Feb 29 Javascript
js获取图片的base64编码并压缩
Dec 05 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
php笔记之常用文件操作
2010/10/12 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
php把数组值转换成键的方法
2015/07/13 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
python创建文件备份的脚本
2018/09/11 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
代码实例讲解python3的编码问题
2019/07/08 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
运动会跳远加油稿
2014/02/20 职场文书
企业授权委托书范本
2014/04/02 职场文书
小学安全汇报材料
2014/08/14 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
银行自荐信范文
2015/03/25 职场文书
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang