微信小程序开发之再次授权地理位置getLocation+openSetting使用
凌雪 2018-08-24 来源 :网络 阅读 4121 评论 0

摘要:本文将带你了解微信小程序开发之再次授权地理位置getLocation+openSetting使用,希望本文对大家学微信有所帮助

本文将带你了解微信小程序开发之再次授权地理位置getLocation+openSetting使用,希望本文对大家学微信有所帮助


写在前面我们知道:
    1、微信的getLocation接口,是获取用户当前地理位置的,返回经纬度、速度等信息;
    2、它的默认工作机制:
    首次进入页面,调用该api,返回用户授权结果,并保持该结果。
    只要用户未删除该小程序或变更授权情况,那么用户再次进入该页面,
    授权结果还是不变,且不会再次调用该API;
    3、那么问题来了:如何不要求用户删除小程序情况下,再次发起授权请求呢?
    KEY:wx.openSetting1、效果图:首次进入某页面拒绝授权后,再次进入该页面或者点击页面某按钮(获取位置)绑定JS2、不知道有没有细心的道友,发现上面2个弹出框的结构是一样的,前者使用的是wx.getLocation接口自带的样式,后者使用的wx.showModel接口带的样式3、废话不多说,简单讲一下原理:首次进入该页面,onload或者onshow调用wx.getLocation要求用户进行授权;用户拒绝后,再次进入该页面,我们通过wx.getSetting接口,返回用户授权的情况:然后,根据上面JS中,res.authSetting['scope.userLocation']的值与true比较,为true就是授权了,false就是拒绝授权了。我们这里考虑的是拒绝授权,再调用wx.openSetting接口,请求再次授权,返回授权结果处理数据和业务。over,就是这么EASY!4、我这里只打印出了userInfo和userLocation的接口返回信息,当然你还可以打印其他的信息,只要你之前调用过这些微信API,详见微信的scope表:https://mp.weixin.qq.com/debug/wxadoc/dev/api/authorize-index.html5、详情代码://地图功能单独拿出来   -xzz1023
    var village_LBS = function(that){
      //var that = this;
      // ------------ 腾讯LBS地图  --------------------
      wx.getLocation({
        type: 'gcj02',   //返回可以用于wx.openLocation的经纬度
        success: function (res) {
          // 调用接口, 坐标转具体位置 -xxz0717
          demo.reverseGeocoder({
            location: {
              latitude:   Number(res.latitude),
              longitude:   Number(res.longitude)
            },
            success: function (res)   {
              console.log(res);
              that.setData({
                start_address:   res.result.address,   //起点地址
                city:   res.result.address_component.city,    //起点城市
                district:   res.result.address_component.district     //区
              })
            }
          });
      })
    )
    Page({
        onLoad: function (options)   {
           var that = this;
           village_LBS(that);
       }
         onReady: function () {
             var that = this;
        wx.getSetting({
          success: (res) => {
            console.log(res);
              console.log(res.authSetting['scope.userLocation']);
            if   (res.authSetting['scope.userLocation'] != undefined &&   res.authSetting['scope.userLocation'] != true) {//非初始化进入该页面,且未授权
              wx.showModal({
                title: '是否授权当前位置',
                content:   '需要获取您的地理位置,请确认授权,否则地图功能将无法使用',
                success: function (res)   {
                  if (res.cancel) {
                      console.info("1授权失败返回数据");
   
                  } else if (res.confirm)   {
                    //village_LBS(that);
                      wx.openSetting({
                      success: function   (data) {
                        console.log(data);
                        if   (data.authSetting["scope.userLocation"] == true) {
                            wx.showToast({
                            title:   '授权成功',
                            icon:   'success',
                            duration:   5000
                          })
                            //再次授权,调用getLocationt的API
                            village_LBS(that);
                        }else{
                            wx.showToast({
                            title:   '授权失败',
                            icon:   'success',
                            duration:   5000
                          })
                        }
                      }
                    })
                  }
                }
              })
            } else if   (res.authSetting['scope.userLocation'] == undefined) {//初始化进入
              village_LBS(that);
            }
          }
        })
         }
   
   
    })     

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 6 不喜欢 | 1
看完这篇文章有何感觉?已经有7人表态,86%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程