java计算经纬度距离

╰半橙微兮° 2022-09-04 00:48 313阅读 0赞

代码如下:

  1. package com.mortals.iot.retail.business.api.handler.order;
  2. public class LocationUtils {
  3. // 地球赤道半径
  4. private static double EARTH_RADIUS = 6378.137;
  5. //等同——Math.toRadians()
  6. private static double rad(double d) {
  7. return d * Math.PI / 180.0;
  8. }
  9. /**
  10. * @描述 经纬度获取距离,单位为米
  11. * @参数 [lat1, lng1, lat2, lng2]
  12. * @返回值 double
  13. **/
  14. public static double getDistance(double lat1, double lng1, double lat2,
  15. double lng2) {
  16. double radLat1 = rad(lat1);
  17. double radLat2 = rad(lat2);
  18. double a = radLat1 - radLat2;
  19. double b = rad(lng1) - rad(lng2);
  20. double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
  21. + Math.cos(radLat1) * Math.cos(radLat2)
  22. * Math.pow(Math.sin(b / 2), 2)));
  23. s = s * EARTH_RADIUS;
  24. s = Math.round(s * 10000d) / 10000d;
  25. s = s * 1000;
  26. return s;
  27. }
  28. public static void main(String[] args) {
  29. double distance = getDistance(30.57404, 104.073013,
  30. 30.509376, 104.077001);
  31. System.out.println("距离" + distance + "米");
  32. }
  33. }

原理

在线拾取经纬度

发表评论

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

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

相关阅读

    相关 java 根据经纬度计算实际距离

    经纬度,表面的含义就是经纬度的平方和,然后开平方。。。一切都没问题。。   但问题不是简单的二维平面,在二维空间中,这样计算是没有问题。。。   但是。。。。。