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


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 相关文章推荐
比Jquery的document.ready更快的方法
Apr 28 Javascript
jquery监控数据是否变化(修正版)
Apr 12 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
Jan 21 Javascript
jquery密码强度校验
Dec 02 Javascript
Javascript操作表单实例讲解(下)
Jun 20 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
Oct 17 Javascript
vue.js实现表格合并示例代码
Nov 30 Javascript
javascript实现二叉树的代码
Jun 08 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
详解vue中axios请求的封装
Apr 08 Javascript
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
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 GD绘制24小时柱状图
2008/06/28 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
php模板引擎技术简单实现
2016/03/15 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python Requests安装与简单运用
2016/04/07 Python
Python实现随机漫步功能
2018/07/09 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
2014年军人思想汇报范文
2014/10/12 职场文书
给朋友的赠语
2015/06/23 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
vue 实现上传组件
2021/05/31 Vue.js
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
go开发alertmanger实现钉钉报警
2021/07/16 Golang
MySQL创建管理LIST分区
2022/04/13 MySQL