记录前端通过经纬度计算距离

前端经纬度计算距离

  // 获取弧度

  function  getRad(d){

        return  (d * Math.PI )/ 180.0;

    },

    // 计算距离  lat1,lng1 第一个坐标 lat2,lng2 目标坐标

  function getFlatternDistance(lat1,lng1,lat2,lng2){

        var  f  =  this.getRad((lat1  +  lat2) / 2);

        var  g  =  this.getRad((lat1  -  lat2) / 2);

        var  l  =  this.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  =  6378137.0;

        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));

    }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容