0

我有两组坐标。用户必须从一个位置旅行到另一个位置。显示两个坐标之间的方向的最佳方法是什么。我计算了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 设备正确从起点到达终点的所有详细信息。

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

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

  2. 是方位角,与我上面提到的角度相同。

4

2 回答 2

1

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

按照此链接获取具有距离、方位、中点等的半正弦公式

地理坐标地理 坐标详细信息

于 2013-09-05T10:39:56.477 回答
1

“航向/方位”是指向北方的线和指向您要去的地方的线之间的角度。因此,如果目标就在您的正北,则航向为 0°。如果目标在您的正东,则航向为 90°。由于航向总是从北测量,因此您不会说 90°N。如果您将其作为测量值,大多数地理学家会认为您的意思是从赤道向上 30°

StackOverlow 上的另一个问题显示了 Haversine 公式的 Objective-C 实现。在赤道附近时,您可以使用更快的公式并且不会太错误,但是以 iOS 设备的速度,除非您进行一百万次这样的计算,否则您最好使用更准确的计算。

于 2013-09-05T20:46:33.653 回答