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

标签 iphone ios ipad mkmapview cllocationcoordinate2d

我有两组坐标。用户必须从一个位置旅行到另一个位置。在两个坐标之间显示方向的最佳方式是什么。我计算了两点之间的距离。 我还找到了 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°,西经 20°,才能到达英国。

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

最佳答案

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

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

关于iphone - 获取 2 个地理坐标之间的方向方位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633665/

相关文章:

ios - iOS 7 和 iOS 8 的人物选择器

iphone - NSDateFormatter 返回空日期

iphone - NSDate isEqualToDate : not working - does it look at seconds and split seconds?

ios - 如何实现与另一个类同名的协议(protocol)

iphone - 你如何在 objective-c 中让图像跟随你的手指?

ios - 具有不同文本大小的 ui 段控件

ios - "iPhone only"应用程序的 iPad iOS 7 图标

iphone - 如何在 UIWebView 上模拟点击事件?

ios - 如何强制刷新重用的 collectionview 单元格?

iphone - 如何为 UITableViewCell 创建弹出窗口,就像 iPhone 上的音乐应用程序 (iOS 5)