根据两点经纬度计算距离和角度

秒速五厘米 2023-01-13 05:41 390阅读 0赞

1.distance

复制代码

  1. /**
  2. *
  3. * @param long1 经度1
  4. * @param lat1 维度1
  5. * @param long2 经度2
  6. * @param lat2 纬度2
  7. * @return
  8. */
  9. public static double getDistance(double long1, double lat1, double long2,
  10. double lat2) {
  11. double a, b, R;
  12. R = 6378137; // 地球半径
  13. lat1 = lat1 * Math.PI / 180.0;
  14. lat2 = lat2 * Math.PI / 180.0;
  15. a = lat1 - lat2;
  16. b = (long1 - long2) * Math.PI / 180.0;
  17. double d;
  18. double sa2, sb2;
  19. sa2 = Math.sin(a / 2.0);
  20. sb2 = Math.sin(b / 2.0);
  21. d = 2 * R * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2));
  22. return d;
  23. }

复制代码

2.bearing

复制代码

  1. /**
  2. *
  3. * @param lat_a 纬度1
  4. * @param lng_a 经度1
  5. * @param lat_b 纬度2
  6. * @param lng_b 经度2
  7. * @return
  8. */
  9. private double getAngle1(double lat_a, double lng_a, double lat_b, double lng_b) {
  10. double y = Math.sin(lng_b-lng_a) * Math.cos(lat_b);
  11. double x = Math.cos(lat_a)*Math.sin(lat_b) - Math.sin(lat_a)*Math.cos(lat_b)*Math.cos(lng_b-lng_a);
  12. double brng = Math.atan2(y, x);
  13. brng = Math.toDegrees(brng);
  14. if(brng < 0)
  15. brng = brng +360;
  16. return brng;
  17. }

发表评论

表情:
评论列表 (有 0 条评论,390人围观)

还没有评论,来说两句吧...

相关阅读

    相关 根据经纬度计算之间的距离

        经纬度计算有各种计算方式,一般误差也各不相同。个人觉着结合地球半径的计算方法可能靠谱一些,但是具体的计算公式是怎么来的,就不清楚,不知道谁提出的。下面给出一个计算方法和

    相关 根据经纬度坐标计算距离

    现在如果有个业务需求,就是要做一个根据定位坐标实现计算距离并找到附近的店铺的推荐功能,已知数据库中会存储店铺的经纬度坐标。那么,这个需求已经很明确了,在要求不高的情况下,只要计

    相关 根据经纬度计算距离

    经纬度简介 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都