项目开发过程中遇到,一个需求实时获取最新的经纬度,来计算距离,通常我们使用的都是wx.getLocation进行获取定位信息,但是微信官方文档提示为了节能,wx.getLocation不能持续获取经纬度,推荐使用 wx.onLocationChange
wx.getLocation 的限制
wx.onLocationChange 使用
使用wx.onLocationChange,需要搭配wx.startLocationUpdateBackground进行使用
wx.onLocationChange使用步骤
1.在app.json里面进行配置
"requiredBackgroundModes": [
"location"
]
2.在自己的业务逻辑里面添加
wx.startLocationUpdateBackground({
success:(res)=>{
//成功的逻辑
wx.onLocationChange((data)=>{ //获取实时的定位信息
console.log(data)
})
},
fail:(err)=>{
//失败的逻辑
//1.wx.showModal引导用户授权
//2.通过wx.openSetting让用户开启权限
wx.showModal({ //引导用户授权
content: '提示语文本.....',
confirmText: "确认",
cancelText: "取消",
success: function (res) {
//点击“确认”时打开设置页面
if (res.confirm) {
wx.openSetting({ //打开设置页面让用户选择权限
success: (res) => {
if(res.authSetting["scope.userLocationBackground"] == true){
wx.onLocationChange((data)=>{ //实时获取用户最新的经纬度信息
console.log(data)
})
}
}
})
} else { //取消打开设置授权页面
wx.showToast({
title: "取消授权~",
icon: 'none',
})
}
}
})
}
})
3.用户授权实时获取最新的经纬度信息
重点
wx.onLocationChange使用,必须搭配wx.offLocationChange进行使用,根据业务需求调用wx.offLocationChange停止请求经纬度,不然wx.onLocationChange不停的获取最新的经纬度信息,消耗电