javscript根据经纬度计算两地距离

javscript根据经纬度计算两地距离

//经纬度转换成三角函数中度分表形式。
    function rad(d) {
        return d * Math.PI / 180.0;
    }
    function getDistance(lat1, lng1, lat2, lng2) {
        let radLat1 = rad(lat1);
        let radLat2 = rad(lat2);
        let a = radLat1 - radLat2;
        let b = rad(lng1) - rad(lng2);
        let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
        s = s * 6378.137;// EARTH_RADIUS;
        s = Math.round(s * 10000) / 10000; //输出为公里
        return s;
    }
//调用
getDistance(lat1, lng1, lat2, lng2).toFixed(2);	//保留小数点后两位

项目应用

在已知一个经纬度的情况下,通过微信定位接口获取当前位置,计算两地距离

$.ajax({
        type: "post",
        dataType: 'json',
        data: data,
        url: "xxxx",
        success: function (res) {
            if (res.status == 1){
            //通过接口获取微信权限配置
                wx.config({
                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                    appId: res.data.appId, // 必填,公众号的唯一标识
                    timestamp: res.data.timestamp, // 必填,生成签名的时间戳
                    nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
                    signature: res.data.signature,// 必填,签名
                    jsApiList: res.data.jsApiList // 必填,需要使用的JS接口列表
                });
                wx.ready(function(){
                    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
                    //获取当前定位,需授权
                    wx.getLocation({
                        type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
                        success: function (res) {
                            var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
                            var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
                            var distance = geoDistance(latitude, longitude, lat2, lng2).toFixed(2);
                            $('.distance').text(distance+'km');		//输出至页面
                        }
                    });
                });
            }
        }
    });
发布了18 篇原创文章 · 获赞 4 · 访问量 4885

猜你喜欢

转载自blog.csdn.net/xiaojun201593/article/details/97932978