我有两组坐标。用户必须从一个位置旅行到另一个位置。在两个坐标之间显示方向的最佳方式是什么。我计算了两点之间的距离。 我还找到了 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 个地点,一个在英格兰,另一个在西类牙。如果我从西类牙前往英国,
是否可以获得诸如 30°N 20°W 之类的方向。也就是说,我必须从西类牙出发,北纬 30°,西经 20°,才能到达英国。
是方位角,和我上面提到的角度相同。
最佳答案
“航向/方位”是指向北方的线与指向您要去的地方的线之间的角度。因此,如果目标在您的正北方向,则航向为 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/