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_