0
我試圖根據設備方向設置地圖方位。到目前爲止,它工作正常,但偶爾軸承設置爲0.我通過記錄我的方位計算輸出和我通過OnCameraChangeListener獲得的方位進行了檢查,看起來我的計算是正確的,但不知何故,它在moveCamera()方法中重置爲0。有趣的是,它似乎在定期發生(大約5-6秒)。有其他人遇到過這個問題嗎?是否有一個原因?有沒有解決方法?提前致謝。設備方向更改重置方位計算輸出
編輯 這裏是我用來旋轉地圖的代碼。
private void init() {
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
mGravity = event.values;
} else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
mGeomagnetic = event.values;
}
if(mGravity != null && mGeomagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
float newBearing;
boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
if (success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
if (mBearing != Float.MIN_VALUE) {
newBearing = mBearing
+ ALPHA
* ((float) Math.toDegrees(orientation[0]) - mBearing);
} else {
newBearing = ((float) Math.toDegrees(orientation[0]));
}
mBearing = newBearing;
CameraPosition cameraPosition = CameraPosition
.builder(mMap.getCameraPosition())
.bearing(mBearing).build();
CameraUpdate cameraUpdate = CameraUpdateFactory
.newCameraPosition(cameraPosition);
mMap.moveCamera(cameraUpdate);
}
}
}
我認爲這將有助於在問題中添加一些代碼 – Rishabh