項目開發(fā)過程中遇到,一個需求實時獲取最新的經(jīng)緯度,來計算距離,通常我們使用的都是wx.getLocation進行獲取定位信息,但是微信官方文檔提示為了節(jié)能,wx.getLocation不能持續(xù)獲取經(jīng)緯度,推薦使用 wx.onLocationChange
wx.getLocation 的限制
wx.onLocationChange 使用
使用wx.onLocationChange,需要搭配wx.startLocationUpdateBackground進行使用
wx.onLocationChange使用步驟
1.在app.json里面進行配置
"requiredBackgroundModes": [
"location"
]
2.在自己的業(yè)務(wù)邏輯里面添加
wx.startLocationUpdateBackground({
success:(res)=>{
//成功的邏輯
wx.onLocationChange((data)=>{ //獲取實時的定位信息
console.log(data)
})
},
fail:(err)=>{
//失敗的邏輯
//1.wx.showModal引導用戶授權(quán)
//2.通過wx.openSetting讓用戶開啟權(quán)限
wx.showModal({ //引導用戶授權(quán)
content: '提示語文本.....',
confirmText: "確認",
cancelText: "取消",
success: function (res) {
//點擊“確認”時打開設(shè)置頁面
if (res.confirm) {
wx.openSetting({ //打開設(shè)置頁面讓用戶選擇權(quán)限
success: (res) => {
if(res.authSetting["scope.userLocationBackground"] == true){
wx.onLocationChange((data)=>{ //實時獲取用戶最新的經(jīng)緯度信息
console.log(data)
})
}
}
})
} else { //取消打開設(shè)置授權(quán)頁面
wx.showToast({
title: "取消授權(quán)~",
icon: 'none',
})
}
}
})
}
})
3.用戶授權(quán)實時獲取最新的經(jīng)緯度信息
重點
wx.onLocationChange使用,必須搭配wx.offLocationChange進行使用,根據(jù)業(yè)務(wù)需求調(diào)用wx.offLocationChange停止請求經(jīng)緯度,不然wx.onLocationChange不停的獲取最新的經(jīng)緯度信息,消耗電
