/**
* 根據兩點經緯度計算距離
*/
public
class
Distance {
private
static
double
EARTH_RADIUS =
6378.137
;
private
static
double
rad(
double
d) {
return
d * Math.PI /
180.0
;
}
/**
* 根據兩點間經緯度座標(double值),計算兩點間距離,單位爲米
*/
public
static
double
GetDistance(
double
lat1,
double
lng1,
double
lat2,
double
lng2) {
double
radLat1 = rad(lat1);
double
radLat2 = rad(lat2);
double
a = radLat1 - radLat2;
double
b = rad(lng1) - rad(lng2);
double
s =
2
* Math.asin(Math.sqrt(Math.pow(Math.sin(a /
2
),
2
)
+ Math.cos(radLat1) * Math.cos(radLat2)
* Math.pow(Math.sin(b /
2
),
2
)));
s = s * EARTH_RADIUS;
s = Math.round(s *
10000
) /
10000
;
return
s;
}
public
static
void
main(String[] args) {
double
distance = GetDistance(
121.491909
,
31.233234
,
121.411994
,
31.206134
);
System.out.println(
"Distance is:"
+ distance);
}
}