• 获取两坐标之间距离


    <!DOCTYPE html>
    
    <html>
    
        <head>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
            <title>登录</title>
            
        </head>
    
        <body class="beg-login-bg">
            
        <script>
            window.onload=function(){
                var EARTH_RADIUS = 6378137.0;    //单位M
    
                var PI = Math.PI;
    
                
    
                function getRad(d){
    
                    return d*PI/180.0;
    
                }
    
                
    
                /**
    
                 * caculate the great circle distance
    
                 * @param {Object} lat1
    
                 * @param {Object} lng1
    
                 * @param {Object} lat2
    
                 * @param {Object} lng2
    
                 */
    
                function getGreatCircleDistance(lat1,lng1,lat2,lng2){
    
                    var radLat1 = getRad(lat1);
    
                    var radLat2 = getRad(lat2);
    
                    
    
                    var a = radLat1 - radLat2;
    
                    var b = getRad(lng1) - getRad(lng2);
    
                    
    
                    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;
    
                    s = Math.round(s*10000)/10000.0;
    
                            
    
                    return s;
    
                }
                /**
    
                 * approx distance between two points on earth ellipsoid
    
                 * @param {Object} lat1
    
                 * @param {Object} lng1
    
                 * @param {Object} lat2
    
                 * @param {Object} lng2
    
                 */
    
                function getFlatternDistance(lat1,lng1,lat2,lng2){
    
                    var f = getRad((lat1 + lat2)/2);
    
                    var g = getRad((lat1 - lat2)/2);
    
                    var l = getRad((lng1 - lng2)/2);
    
                    
    
                    var sg = Math.sin(g);
    
                    var sl = Math.sin(l);
    
                    var sf = Math.sin(f);
    
                    
    
                    var s,c,w,r,d,h1,h2;
    
                    var a = EARTH_RADIUS;
    
                    var fl = 1/298.257;
    
                    
    
                    sg = sg*sg;
    
                    sl = sl*sl;
    
                    sf = sf*sf;
    
                    
    
                    s = sg*(1-sl) + (1-sf)*sl;
    
                    c = (1-sg)*(1-sl) + sf*sl;
    
                    
    
                    w = Math.atan(Math.sqrt(s/c));
    
                    r = Math.sqrt(s*c)/w;
    
                    d = 2*w*a;
    
                    h1 = (3*r -1)/2/c;
    
                    h2 = (3*r +1)/2/s;
    
                    
    
                    return d*(1 + fl*(h1*sf*(1-sg) - h2*(1-sf)*sg));
    
                }
                console.log(getGreatCircleDistance(39.87945682,116.64095684,39.91406638,116.60629272))
                console.log(getFlatternDistance(39.87945682,116.64095684,39.91406638,116.60629272)) 
            }
                
            </script>
        </body>
    
    </html>


  • 相关阅读:
    POJ 3126 Prime Path
    POJ 2429 GCD & LCM Inverse
    POJ 2395 Out of Hay
    【Codeforces 105D】 Bag of mice
    【POJ 3071】 Football
    【POJ 2096】 Collecting Bugs
    【CQOI 2009】 余数之和
    【Codeforces 258E】 Devu and Flowers
    【SDOI 2010】 古代猪文
    【BZOJ 2982】 combination
  • 原文地址:https://www.cnblogs.com/whybxy/p/8952315.html
Copyright © 2020-2023  润新知