获取2个地理坐标之间方向的方位

时间:2013-09-05 10:17:20

标签: iphone ios ipad mkmapview cllocationcoordinate2d

我有两组坐标。用户必须从一个地方旅行到另一个地方。在两个坐标之间显示方向的最佳方法是什么。我计算了2点之间的距离。 我也找到了2坐标之间的角度。

p1 = CGPointMake(coordinatesInDisplacement.latitude, coordinatesInDisplacement.longitude);
p2 = CGPointMake(coordinatesInDistance.latitude,coordinatesInDistance.longitude);

f = [self pointPairToBearingDegrees:p1 secondPoint:p2];

- (CGFloat) pointPairToBearingDegrees:(CGPoint)startingPoint secondPoint:(CGPoint) endingPoint
{
CGPoint originPoint = CGPointMake(endingPoint.x - startingPoint.x, endingPoint.y - startingPoint.y); // get origin point to origin by subtracting end from start
float bearingRadians = atan2f(originPoint.y, originPoint.x); // get bearing in radians
float bearingDegrees = bearingRadians * (180.0 / M_PI); // convert to degrees
bearingDegrees = (bearingDegrees > 0.0 ? bearingDegrees : (360.0 + bearingDegrees)); // correct discontinuity
return bearingDegrees;
}

找到没有方向的角度用于导航。是否可以使用提供的2个坐标找到方向?

但我认为这还不够。我应该(或者可以)从IOS设备向用户提供从起点到目的地正确到达的所有细节。

编辑:我有两个地点,一个在英格兰,另一个在西班牙。如果我从西班牙旅行到英国,

  1. 是否可以获得30°N 20°W的方向。即我必须从西班牙30°N到20°W才能到达英格兰。

  2. 轴承角度是否与上面提到的角度相同。

2 个答案:

答案 0 :(得分:1)

您可以使用半正弦公式计算两个纬度之间的方位角。

请点击此链接获取hasrsine公式,该公式为您提供距离,方位,中点等

GeoCordinates GeoCordinates Details

答案 1 :(得分:1)

“航向/方位”是指向北方的线与指向前方的线之间的角度。因此,如果目标位于您的正北方,则标题为0°。如果目标位于您的正前方,则标题为90°。由于航向总是从北方测量,因此不要说90°N。如果您将此作为衡量标准,大多数地理学家会认为您的意思是30° up from the equator

Another question here on StackOverlow显示了Haversine公式的Objective-C实现。在赤道附近,您可以使用更快的公式并且不会太错,但是除非您进行了一百万次这些计算,否则使用iOS设备的速度时,您也可以使用更准确的计算。