2012-05-09 73 views
0

我想要獲得給定當前位置,方位和距離的GPS座標。獲取給定當前位置,方位和距離的GPS座標

但我找不到任何與可可觸摸有關的東西。

我發現這裏Get lat/long given current point, distance and bearing

公式是否有適用於iOS更簡單的方法?

在此先感謝。

+0

沒有內置的方法。嘗試[這個Objective-C實現](http://stackoverflow.com/questions/6633850/calculate-new-coordinate-x-meters-and-y-degree-away-from-one-coordinate)你鏈接的公式至。 – Anna

回答

1

將鏈接中的代碼轉換爲Objective-C。

- (double)degreesToRadians:(double)degrees { 
    return degrees * M_PI/180; 
} 

- (double)radiansToDegrees:(double)radians { 
    return radians * 180/ M_PI; 
} 


- (CLLocationCoordinate2D)remoteCoordinate:(CLLocationCoordinate2D)localCoordinate withDistance:(double)distance withBearing:(double)bearing { 

    double earthRadius = 6378.1;   // Radius of Earth in kilometres. 

    double rLat1 = [self degreesToRadians:localCoordinate.latitude];  // Convert latitude to radians 
    double rLon1 = [self degreesToRadians:localCoordinate.longitude]; // Convert longitude to radians 

    double rLat2 = asinl(sinl(rLat1) * cosl(distance/earthRadius) + cosl(rLat1) * sinl(distance/earthRadius) * cosl(bearing)); 
    double rLon2 = rLon1 + atan2l(sinl(bearing) * sinl(distance/earthRadius) * cosl(rLat1), cosl(distance/earthRadius) - sinl(rLat1) * sinl(rLat2)); 

    double dLat2 = [self radiansToDegrees:rLat2];  // Convert latitude to degrees 
    double dLon2 = [self radiansToDegrees:rLon2];  // Convert longuitude to degrees 

    return CLLocationCoordinate2DMake(dLat2, dLon2); 
} 
+0

地球半徑不是6378公里,它是6371公里 –