最近更新
阅读排行
关注本站

利用经纬度计算两点之间距离

阅读:4403 次   编辑日期:2014-01-20

目录:

概述:

由于现在的工作跟地图有关,经常会遇到根据经纬度计算两点之间距离的问题。所以今天就在这里分享一下,我用的方法。

利用经纬度计算两点之间距离:

     function calculate(start,end){
        //start 起点经纬度,数据格式 start = {lon:,lat:}
        //end 终点定位度,数据格式 end = {lon:,lat:}
        if(start.lon != null && start.lat != null && end.lon != null && end.lat != null){
            function rad(d){
                return d * Math.PI / 180.0;
            }
            var slon = start.lon / 3600000;
            var slat = start.lat / 3600000;
            var elon = end.lon / 3600000;
            var elat = end.lat / 3600000;
            //赤道半径
            var EARTH_RADIUS = 6378137;
            var radLat1 = rad(slat);
            var radLat2 = rad(elat);
            var a = radLat1 - radLat2;
            var b = rad(slon) - rad(elon);

            var 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 * EARTH_RADIUS;

            //返回公里
            var kilometer = Math.round(s * 10000) / 10000000;
            var kl = kilometer + "";
            if(kl.length > 4){
                //保留两位小数
                return kilometer.toFixed(2);
            }
            else{
                return kilometer;
            }
        }
        return "";
    };
上面的代码返回两点之间距离的公里数,如果想返回米,就自己修改一下~
将本篇文章分享到:
top