我的要求正確航向像Google maps apps
羅盤模式軸承(你可以看到演示時點擊current location button twice
):計算真正在Android的
- 在這個
compass
模式下,地圖總是一個角度,使旋轉bluedot arrow
始終指向頂部屏幕。
但我不知道如何從azimuth, pitch, roll
值計算正確的bearing
。
public void onSensorChanged(SensorEvent sensorEvent) {
switch (sensorEvent.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
System.arraycopy(sensorEvent.values, 0, mAccelerometers, 0, 3);
break;
case Sensor.TYPE_MAGNETIC_FIELD:
System.arraycopy(sensorEvent.values, 0, mMagnetometers, 0, 3);
break;
default:
break;
}
float[] rotationMatrix = new float[9];
boolean success =
SensorManager.getRotationMatrix(rotationMatrix, null, mAccelerometers, mMagnetometers);
if (success) {
SensorManager.getOrientation(rotationMatrix, mOrientation);
float azimuth = Math.toDegrees(mOrientation[0]);
float pitch = Math.toDegrees(mOrientation[1]);
float roll = Math.toDegrees(mOrientation[2]);
}
// cal to updateBearing();
}
在iOS中,CLHeading
可以返回準確真實heading
。 android
中是否有一個班級具有相同的功能?我該如何計算它?
這有幫助嗎? http://stackoverflow.com/q/7355679/7292819 – Gary99
@加里99,沒有人。 – NamNH
您是否檢查過[this](http://stackoverflow.com/a/4316717/5993410) –