1 package edu.cloud.editmap.utils; 2 3 import org.junit.Test; 4 /** 5 * 经纬度求距离 6 * @author lingfeng 7 */ 8 public class LatLon2Distance { 9 10 //地球半径 11 private static double EARTH_RADIUS = 6378.137; 12 /** 13 * 经纬度转换 14 * @param d 15 * @return 16 */ 17 private static double rad(double d) 18 { 19 return d * Math.PI / 180.0; 20 } 21 /** 22 * 距离计算 23 * @param lat1 24 * @param lng1 25 * @param lat2 26 * @param lng2 27 * @return 28 */ 29 public static double getDistance(double lat1, double lng1, double lat2, double lng2) 30 { 31 double radLat1 = rad(lat1); 32 double radLat2 = rad(lat2); 33 double a = radLat1 - radLat2; 34 double b = rad(lng1) - rad(lng2); 35 36 double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + 37 Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2))); 38 s = s * EARTH_RADIUS; 39 s = Math.round(s * 10000) / 10000; 40 return s; 41 } 42 43 @Test 44 public void test(){ 45 //System.out.println(getDistance(25.2803229,110.3083241,25.289289679357516,110.30976545104478)); 46 } 47 }