计算两经纬度之间的距离
1. public class Distance { 2. 3. /** 地球半径,以千米(km)为计算单位 */ 4. private final static double EARTH_RADIUS = 6378.137; 5. 6. /** 求弧度大小 */ 7. private static double rad(double d) { 8. return d * Math.PI / 180.0; 9. } 10. 11. /** 12. * 根据地球上两点间的经纬度求距离 13. * 14. * @param lat1 15. * @param lng1 16. * @param lat2 17. * @param lng2 18. * @return 两点间的距离千米数(km) 19. */ 20. public static double getDistance(double lng1, double lat1, double lng2,double lat2) { 21. double radLng1 = rad(lng1); 22. double radLng2 = rad(lng2); 23. double a = radLng1 - radLng2; 24. double b = rad(lat1) - rad(lat2); 25. double dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)+ 26. Math.cos(radLng1) * Math.cos(radLng2)* Math.pow(Math.sin(b / 2), 2))); 27. dis = dis * EARTH_RADIUS; 28. dis = Math.round(dis * 10000) / 10000.0;//除数写成10000.0减小误差 29. return dis; 30. } 31. 32. /** 33. * @param args 34. */ 35. public static void main(String[] args) { 36. System.out.println("地球周长:"+2*Math.PI*EARTH_RADIUS); 37. System.out.println("90度:"+getDistance(0,0,90,0)); 38. System.out.println("180度:"+getDistance(0,0,180,0)); 39. } 40. 41. }