计算两个经纬度点之间的直线距离

/**
 * 计算地图两点之前的直线距离
 */
function distanceCompute(log1, lat1, log2, lat2) {
  let latOne = lat1 * Math.PI / 180.0;
  let latTwo = lat2 * Math.PI / 180.0;
  let LaDValue = latOne - latTwo; // 纬度第一点和第二点相差值
  let LoDValue = log1 * Math.PI / 180.0 - log2 * Math.PI / 180.0; // 经度第一点和第二点相差值
  let DValue = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(LaDValue / 2), 2) + Math.cos(latOne) * Math.cos(latTwo) * Math.pow(Math.sin(LoDValue / 2), 2)));
  DValue = DValue * 6378.137; //地球半径
  DValue = Math.round(DValue * 10000) / 10000;
  DValue = DValue * 1000;
  DValue = DValue.toFixed(0);
  return kmUpdate(DValue);
}
/**
 * 公里数更换
 */
function kmUpdate(distance) {
  // 设置距离为m、km
  if (parseFloat(distance) >= 1000) {
    return ((distance) / 1000).toFixed(2) + "km"
  } else {
    distance = distance < 1 ? 0 : distance;
    return distance + "m"
  }
}

 


 

posted @ 2022-01-13 15:35  冷闲欧巴  阅读(289)  评论(0)    收藏  举报