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