Location.bearingTo 值与 SensorManager.getOrientation 不同

问题描述 投票:0回答:1

在我的代码中,我使用

location.bearingTo
来检索目标位置的方位角。另外,我将手机指向该位置,因此 SensorManager.getOrientation 也会返回方位角。但结果不同。

为什么?

是的,我知道磁北和真北之间的差异,但在我的代码中结果不同 180°

android android-sensors android-location
1个回答
0
投票

你正在寻找不同的东西。 location.bearingTo 获取您与地球上某个点之间的角度。无论您面向哪个方向,这都是一个固定角度。假设您的 GPS 位置足够准确,和/或位置足够远(距离越远,不准确的影响越小,因为偏差较小),它将是正确的。

getOrientation 调用需要各种传感器,包括地磁和加速度计(用于确定重力方向)来确定您的方向。所以它不会那么准确。并且假设您实际上指向正确的方向(很容易认为您指向正北,但事实并非如此)。但更重要的是,它不是测量到另一个位置的角度 - 它是测量手机的角度。数学上不完全正确吗?它将会关闭。如果您想要某个位置的角度,请不要使用此功能。

当然,如果你实际上一直偏离 180 度——那就完全相反了。很可能您不明白 z 轴是什么,并将其倒过来(正 z 轴从手机正面伸出,因此如果您举起它以便可以看到它,它实际上会旋转 180 度)从您期望的方向)。

© www.soinside.com 2019 - 2024. All rights reserved.