大家都知道,小程序中有一个wx.getLocation的方法可以来获取用户坐标,但实际使用使用并没有这么简单。我们还要考虑到用户授权的问题。
我们可以通过wx.getSetting方法,来获取到用户的授权配置信息。从结果中找出关于位置定位的当前值:res.authSetting['scope.userLocation']。这个值可能有三种情况:
1、undefined,第一次请求权限,还没有值
2、true,之前同意过了
3、false,之前拒绝了
只有在值为true时,我们才可以直接调用wx.getLocation获得结果。
值为undefined时,就比较复杂,我们只能先调用wx.getLocation,系统会对用户进行询问,看用户是同意还是不同意。
最麻烦的是值为false时,我们需要弹出权限设置界面,让用户来调整的他设置,即就之前的拒绝状态,调整为同意。当然用户也有可能继续拒绝,那就没办法了。一旦用户点了同意,那就可以调用wx.getLocation了。
下面可以看一下我封闭的一个getLocation的Promise:
/** * 获取定位 * resolve(res)的结果 * { accuracy: 65, errMsg: "getLocation:ok", horizontalAccuracy: 65, latitude: 32.05838, longitude: 118.79647, speed: -1, verticalAccuracy: 65 } */ , getLocation: function(){ return new Promise(function (resolve, reject) { //1、授权 wx.getSetting({ success: (res) => { // res.authSetting['scope.userLocation'] // undefined 初始化进入该页面 // false 非初始化进入该页面,且未授权 // true 地理位置授权 if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) { wx.showModal({ title: '请求授权当前位置', content: '需要获取您的地理位置,请确认授权', success: function (res) { if (res.cancel) { reject('用户拒绝授权') } else if (res.confirm) { wx.openSetting({ success: function (auth) { if (auth.authSetting["scope.userLocation"] == true) { //再次授权,调用wx.getLocation的API getZuobiao() } else { reject('用户授权失败') } } }) } } }) } else if (res.authSetting['scope.userLocation'] == undefined) { getZuobiao() } else { getZuobiao() } } }) //2、获取坐标 var getZuobiao = function () { wx.getLocation({ type: 'wgs84', success: function (res) { resolve(res) }, fail: function (res) { reject(res.errMsg) } }) } })//eof-Promise }
关于小程序获取用户定位坐标的经度和纬度,本文就介绍这么多,希望对大家有所帮助。
要饭二维码
洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权
本文属于“洪哥笔记”原创文章,转载请注明来源地址:小程序获取用户定位坐标的经度和纬度及权限问题:http://www.splaybow.com/post/xiaochengxu-location-jingdu-weidu-403.html
如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D!
发布时间:2021/5/1 7:25:29 | 编辑:洪哥 | 分类:小程序 | 浏览: