function location() {
var lat, lng;
let _locationChangeFn = function(res) {
lat = res.latitude;
lng = res.longitude;
//全局变量point
point.push({latitude: lat, longitude : lng});
console.log(point);
//计算距离的方法调用建议写这
}
wx.startLocationUpdate({
success: (res) => {
wx.onLocationChange(_locationChangeFn)
},
fail: (err) => {
// 重新获取位置权限
wx.openSetting({
success(res) {
res.authSetting = {
"scope.userLocation": true
}
}
})
reject(err)
}
})
}
每次传入point最后两点坐标即可计算距离,距离叠加即总距离。想关闭使用直接调用wx.offLocationChange()即可。
//传入两个坐标的经纬度
function getDistance(lat1, lng1, lat2, lng2) {
var dis = 0;
var radLat1 = toRadians(lat1);
var radLat2 = toRadians(lat2);
var deltaLat = radLat1 - radLat2;
var deltaLng = toRadians(lng1) - toRadians(lng2);
var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(deltaLng / 2), 2)));
return dis * 6378137;
function toRadians(d) { return d * Math.PI / 180;}
}