微信小程序wx.onLocationChange的使用,并计算移动距离

964 阅读1分钟
function location() {
    let 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;}
}