public class DistinctUtil { /** * * * MySQL的SQL语句查询 SELECT *, ROUND(6378.138*2*ASIN(SQRT(POW(SIN((30.54895219*PI()/180-lat*PI()/180)/2),2)+COS(30.54895219*PI()/180)*COS(lat*PI()/180)*POW(SIN((104.06606734*PI()/180-lng*PI()/180)/2),2)))*1000) AS juli FROM area ORDER BY juli DESC * * @param lat1 维度1 * @param lng1 经度1 * @param lat2 维度2 * @param lng2 经度2 * @return 米 */ public static double GetDistance2(double lat1, double lng1, double lat2, double lng2) { double earthRadius = 6371;//6371; //appxoximate radius in miles 6378.137 double factor = Math.PI / 180.0; double dLat = (lat2 - lat1) * factor; double dLon = (lng2 - lng1) * factor; double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * factor) * Math.cos(lat2 * factor) * Math.sin(dLon / 2) * Math.sin(dLon / 2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); double d = earthRadius * c * 1000; return d; } public static void main(String[] args) { double result = GetDistance2( 30.54909078d, 104.06744599d, 30.54895219d, 104.06606734d); System.out.println(result); System.out.println(Math.round(result)); } }
相关参考:
http://www.cnblogs.com/puzi0315/p/3293520.html
http://www.storyday.com/wp-content/uploads/2008/09/latlung_dis.html
http://zhidao.baidu.com/link?url=9UaKCwFsvy6J_y_KRlrPn-2CKY8hl7Y9qWm5B3fc8EcCwyHPl8DHUFVNPOVK_rBRyMuJ1z-KUNsfJCc_hXf6O_