我正在尝试开发一个使用 iPhone 的 GPS 和指南针的应用程序,以便将某种指针指向特定位置(如指南针总是指向北方)。
该位置是固定的,无论用户位于何处,我总是需要指针指向该特定位置。
我有这个位置的纬度/经度坐标,但不知道如何使用指南针和 GPS 指向那个位置......任何帮助将不胜感激。
内塔内尔
我正在尝试开发一个使用 iPhone 的 GPS 和指南针的应用程序,以便将某种指针指向特定位置(如指南针总是指向北方)。
该位置是固定的,无论用户位于何处,我总是需要指针指向该特定位置。
我有这个位置的纬度/经度坐标,但不知道如何使用指南针和 GPS 指向那个位置......任何帮助将不胜感激。
内塔内尔
假设您有当前点和目的地点的纬度和经度。让我们称目的地“Q”和当前点“P”。
首先,计算 P 和 Q 之间的纬度和经度距离(增量):
dx = q.lat - p.lat
dy = q.lon - p.lon
然后计算用户从 P 到达 Q 需要经过的角度。这只是基本的三角形几何:
float angleRadians = atan2(dy,dx);
接下来,我们想将该角度与 iPhone 指南针提供的当前角度进行比较。您希望箭头的方向与用户的当前方向相关,以便应用程序显示“向当前方向左侧转 10º”而不是“从北转 56º”。可以这样完成:
float relativeRadians = angleRadians - currentHeadingRadians
应该这样做!这是一些沉重的伪代码,但我认为这是基本思想。希望有帮助!
上面的答案假设地球是平坦的,它适用于短距离,但可能不适用于长距离,比如如果你想制作一个指向麦加的祈祷指南针。