zoukankan      html  css  js  c++  java
  • 获取两坐标之间距离

    <!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>


  • 相关阅读:
    Linux学习总结(16)——CentOS 下 Nginx + Tomcat 配置负载均衡
    photo的复数是photos
    APUE1.11:系统调用 库函数
    Linux的man手册共有以下几个章节
    [关于宝宝的一些网上摘抄]
    ZT-Android深入浅出之Binder机 制
    jclass和jobject的迷惑
    ZT JAVA WeakReference
    ZT————pull push mode
    看了xici有写给孩子的信,maybe我也要写给孩子一些东西了
  • 原文地址:https://www.cnblogs.com/whybxy/p/8952315.html
Copyright © 2011-2022 走看看