fhu*_*cho 6 android android-sensors compass-geolocation
所有在Android中获取指南针方向的指南我都发现了一个错误:当您以纵向模式握住手机并"俯视"地平线时,指南针箭头从正确的方向转动180度.
Google地图方向指示器没有此问题.
谷歌地图的另一个好处是它们以某种方式估计罗盘精度.知道他们是怎么做到的吗?
您问的错误是由于欧拉角或称为万向节锁定引起的。
要解决非常大的角度差,您应该检查您的设备是否平坦或在使用重力传感器获得倾斜度或使用低通滤波器从加速度计获得重力后不检查倾斜度。如果它不是平坦的(AR 应用程序或倾斜度>25 || 倾斜度 < 155)将坐标系从 x,y 重新映射到 x,z。这将解决问题。
SensorManager.getRotationMatrixFromVector(rotationMatrix, event.values);
SensorManager.remapCoordinateSystem(rotationMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, remappedRM);
SensorManager.getOrientation(remappedRM, orientation);
Run Code Online (Sandbox Code Playgroud)
这解决了万向节锁定问题,但是,我在 Play 商店中看到的 3D 指南针(普通指南针无法给出正确的结果,因为它们仅在 x、y 中映射并发生万向节锁定),并且当您保留时,此处的每个代码都会有所不同您的设备平放或屏幕指向您。这种差异有时会达到 10 度。我无法解决它。大多数差异在 1-5 度之间,但我有时会看到它上升到 10 度,这是不可接受的。
Google 会根据您的位置测量方位角。有一个代码可以找到轴承。
currentLocation.getBearing();
Run Code Online (Sandbox Code Playgroud)
经纬度精度(您当前位置的精度)决定了方位的精度。
以最准确到最不准确的方式制作指南针的方法列表
| 归档时间: |
|
| 查看次数: |
4399 次 |
| 最近记录: |