此类存储有关地球上某个位置的信息。地点是 使用纬度和经度指定。该类包括一种方法 以千米计算两个地点之间的距离。
`*这个实现基于Stuart Reges的例子 华盛顿大学。
public class GeoLocation
{
// Earth radius in miles
public static final double RADIUS = 3963.1676;
// Number of kilomteres in one mile
public static final double KM_PER_MILE = 1.60934;
private double latitude;
private double longitude;
/**
* Constructs a geo location object with given latitude and longitude
*/
public GeoLocation(double theLatitude, double theLongitude)
{
latitude = theLatitude;
longitude = theLongitude;
}
/**
* Returns the latitude of this geo location
*/
public double getLatitude()
{
return latitude;
}
/**
* returns the longitude of this geo location
*/
public double getLongitude()
{
return longitude;
}
// returns a string representation of this geo location
public String toString()
{
return "latitude: " + latitude + ", longitude: " + longitude;
}
public double distanceFromInKilometers(GeoLocation other)
{
double lat1 = Math.toRadians(latitude);
double long1 = Math.toRadians(longitude);
double lat2 = Math.toRadians(other.latitude);
double long2 = Math.toRadians(other.longitude);
// apply the spherical law of cosines with a triangle composed of the
// two locations and the north pole
double theCos = Math.sin(lat1) * Math.sin(lat2) +
Math.cos(lat1) * Math.cos(lat2) * Math.cos(long1 - long2);
double arcLength = Math.acos(theCos);
return KM_PER_MILE * arcLength * RADIUS;
}'
所以我有这个代码,意味着转换为公里和: 旧金山到纽约市目前转换为4133.143717886466,这是正确的,但国际航空公司的转换是5576.443040444087,应该是5576.443040444088,任何具体原因,当这个数字在另一个工作时被关闭1?