美文网首页
JS通过两个经纬度,计算出实际距离

JS通过两个经纬度,计算出实际距离

作者: 杨小在 | 来源:发表于2021-07-19 16:19 被阅读0次

    需求

    近期在做一些基于腾讯地图的竞技功能,想通过输入两个经纬度,计算出实际距离

    具体代码

          /**
           * @function 通过传入两个经纬度,计算出实际距离(单位:m)
           * @param {number} lat1  纬度1
           * @param {number} lng1  经度1
           * @param {number} lat2  纬度2
           * @param {number} lng2  经度2
           * @return {number}
           *
           * @author xiaozai 2021.07.19
           *
           */
           function getDistance(lat1, lng1, lat2, lng2){
            // 地球平均半径
            const EARTH_RADIUS = 6378137;
            // 把经纬度转为度(°)
            // 纬度
            let degree_lat1 = (lat1 * Math.PI) / 180.0;
            let degree_lat2 = (lat2 * Math.PI) / 180.0;
            let a = degree_lat1 - degree_lat2;
            // 经度
            let degree_lng1 = (lng1 * Math.PI) / 180.0;
            let degree_lng2 = (lng2 * Math.PI) / 180.0;
            let b = degree_lng1 - degree_lng2;
            // 距离 (单位:米)
            let s =
              2 *
              Math.asin(
                Math.sqrt(
                  Math.pow(Math.sin(a / 2), 2) +
                    Math.cos(degree_lat1) *
                      Math.cos(degree_lat2) *
                      Math.pow(Math.sin(b / 2), 2)
                )
              );
            s = s * EARTH_RADIUS;
            s = Math.round(s * 10000) / 10000;
            return s;
          }
    

    传送门

    1. github地址
    2. java实现方法
    3. 在线计算距离

    相关文章

      网友评论

          本文标题:JS通过两个经纬度,计算出实际距离

          本文链接:https://www.haomeiwen.com/subject/jracmltx.html