2012-05-09 75 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公里 –