關於Geographical distance的維基百科文章有一些計算測地距離的公式。
這是我目前使用的是給了我可以接受的結果的一段代碼:
const float EarthRadius = 6378137.0f;
float SquaredGeodesicDistance(CLLocationCoordinate2D a, CLLocationCoordinate2D b)
{
float dtheta = (a.latitude - b.latitude) * (M_PI/180.0);
float dlambda = (a.longitude - b.longitude) * (M_PI/180.0);
float mean_t = (a.latitude + b.latitude) * (M_PI/180.0)/2.0;
float cos_meant = cosf(mean_t);
return (EarthRadius * EarthRadius) * (dtheta * dtheta + cos_meant * cos_meant * dlambda * dlambda);
}
float GeodesicDistance(CLLocationCoordinate2D a, CLLocationCoordinate2D b)
{
return sqrtf(SquaredGeodesicDistance(a, b));
}
喜歡的東西[這](http://www.movable-type.co.uk/scripts/latlong .html)或者可能[this](http://stackoverflow.com/questions/27928/how-do-i-calculate-distance-between-two-latitude-longitude-points)或者可能[這些答案之一問題](http://gis.stackexchange.com/questions/tagged/distance)? –
描述您想要對您的一組點進行的計算並提出有關優化的問題似乎更有幫助。目前,您正在詢問一個框架方法的實現細節,該方法可能會發生變化,並且可能不被Apple以外的人所知。 –
@DavidRönnqvist,[這個更接近](http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_Points_on_a_Globe#Objective_C)。 –