2009-10-29 22 views

回答

12

CoreLocation Framework提供的能力,制定出的距離,以米爲單位,兩點之間:

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location 

可以初始化一個CLLocation對象與緯度和經度:

- (id)initWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude 
+0

感謝之間的最短距離...它? – Rambo 2009-10-29 12:13:52

2

這是CLLocation框架的一項任務。如果已知座標爲2點,則可以創建(如果您還沒有它們)2個CLLocation對象並使用它們查找它們之間的距離

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location 

方法。

3

如果你有兩個CLLocation對象,你可以做:

[location1 getDistanceFrom:location2]; 

然而,這只是點至點。如果你想要一條特定路線上的距離,那麼,這是另一個魚的水壺。

2

我不是熟悉iPhone的開發,但這裏是使用Haversine公式計算兩點之間距離的C#代碼:

/// <summary> 
/// Computes the distance beween two points 
/// </summary> 
/// <param name="P1_Latitude">Latitude of first point (in radians).</param> 
/// <param name="P1_Longitude">Longitude of first point(in radians).</param> 
/// <param name="P2_Latitude">Latitude of second point (in radians).</param> 
/// <param name="P2_Longitude">Longitude of second point (in radians).</param> 
protected double ComputeDistance(double P1_Longitude, double P1_Latitude, double P2_Longitude, double P2_Latitude, MeasurementUnit unit) 
{    
    double dLon = P1_Longitude - P2_Longitude; 
    double dLat = P1_Latitude - P2_Latitude; 

    double a = Math.Pow(Math.Sin(dLat/2.0), 2) + 
      Math.Cos(P1_Latitude) * 
      Math.Cos(P2_Latitude) * 
      Math.Pow(Math.Sin(dLon/2.0), 2.0); 

    double c = 2 * Math.Asin(Math.Min(1.0, Math.Sqrt(a))); 
    double d = (unit == MeasurementUnit.Miles ? 3956 : 6367) * c; 
    return d; 

} 

的MeasurementUnit被定義爲:

/// <summary> 
/// Measurement units 
/// </summary> 
public enum MeasurementUnit 
{ 
    Miles, 
    Kilometers 
} 
+0

感謝vbocan的回覆 – Rambo 2009-10-29 13:14:36

0

這要看樣的區別,你想同時擁有點之間。在地圖上,我認爲你不想要空中距離。那麼你應該檢查http://iosboilerplate.com/

如果你還想使用空中距離,使用核心位置。

0
- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location 

返回從接收者位置到指定位置的距離(以米爲單位)。 (不推薦使用iOS中使用3.2的 distanceFromLocation:

- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location 
相關問題