7fba8f2a54afb8db504ca8dc5d7cb403c4706883.svn-base 1009 B

123456789101112131415161718192021222324252627282930313233343536
  1. package cn.com.goldenwater.dcproj.utils;
  2. /**
  3. * 计算两个经纬度之间的距离
  4. *
  5. * @author
  6. */
  7. public class CalulateTwoLatLon {
  8. private static final double EARTH_RADIUS = 6378.137;//地球半径,单位千米
  9. private static double rad(double d) {
  10. return d * Math.PI / 180.0;
  11. }
  12. /**
  13. * @param lat1 第一个纬度
  14. * @param lng1 第一个经度
  15. * @param lat2 第二个纬度
  16. * @param lng2 第二个经度
  17. * @return 两个经纬度的距离
  18. */
  19. public static double getDistance(double lat1, double lng1, double lat2, double lng2) {
  20. double radLat1 = rad(lat1);
  21. double radLat2 = rad(lat2);
  22. double a = radLat1 - radLat2;
  23. double b = rad(lng1) - rad(lng2);
  24. double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
  25. Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
  26. s = s * EARTH_RADIUS;
  27. s = Math.round(s * 10000) / 10000;
  28. return s;
  29. }
  30. }