大家都知道,小程序中有一个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 | 编辑:洪哥 | 分类:小程序 | 浏览:



