在我的代码中,我使用
location.bearingTo
来检索目标位置的方位角。另外,我将手机指向该位置,因此 SensorManager.getOrientation 也会返回方位角。但结果不同。
为什么?
是的,我知道磁北和真北之间的差异,但在我的代码中结果不同 180°
你正在寻找不同的东西。 location.bearingTo 获取您与地球上某个点之间的角度。无论您面向哪个方向,这都是一个固定角度。假设您的 GPS 位置足够准确,和/或位置足够远(距离越远,不准确的影响越小,因为偏差较小),它将是正确的。
getOrientation 调用需要各种传感器,包括地磁和加速度计(用于确定重力方向)来确定您的方向。所以它不会那么准确。并且假设您实际上指向正确的方向(很容易认为您指向正北,但事实并非如此)。但更重要的是,它不是测量到另一个位置的角度 - 它是测量手机的角度。数学上不完全正确吗?它将会关闭。如果您想要某个位置的角度,请不要使用此功能。
当然,如果你实际上一直偏离 180 度——那就完全相反了。很可能您不明白 z 轴是什么,并将其倒过来(正 z 轴从手机正面伸出,因此如果您举起它以便可以看到它,它实际上会旋转 180 度)从您期望的方向)。