【Code小记】计算两个经纬之间的距离

未分类 Jireh 40℃ 0评论
private static double getRad(double d) {
   return d * Math.PI / 180.0;
}

   /**
    * 两坐标(经纬度)之间距离计算
    * GD/BD地图采用此算法
    * @param startLng 起点坐标经度
    * @param startLat 起点坐标纬度
    * @param endLng 终点坐标经度
    * @param endLat 终点坐标纬度
    * @return 起点坐标与终点坐标的距离 单位:m
    */
   public static double getGreatCircleDistance(double startLng, double startLat, double endLng, double endLat) {
      double radLat1 = getRad(startLat);
      double radLat2 = getRad(endLat);
      double dy = radLat1 - radLat2; // a
      double dx = getRad(startLng) - getRad(endLng); // b
      double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(dy / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(dx / 2), 2)));
      s = s * EARTH_RADIUS;
      s = Math.round(s * 10000) / 10000.0;
      return s;
   }

 

转载请注明:Jireh花街向着标杆前进 » 【Code小记】计算两个经纬之间的距离

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址