【发布时间】:2014-12-04 13:22:19
【问题描述】:
我有一个地图 API V2 片段。 并启用了指南针。 两指旋转地图后,可以点击指南针重置地图旋转。 指南针点击后如何计算旋转角度?
【问题讨论】:
-
你能投票给答案吗?
标签: android google-maps map android-mapview gesture-recognition
我有一个地图 API V2 片段。 并启用了指南针。 两指旋转地图后,可以点击指南针重置地图旋转。 指南针点击后如何计算旋转角度?
【问题讨论】:
标签: android google-maps map android-mapview gesture-recognition
使用GoogleMap#getCameraPosition().bearing
【讨论】:
使用传感器获取旋转角度
private float[] mapGravity;
private float[] mapMagnetic;
private float getmapDirection()
{
float[] maptemp = new float[9];
float[] mapR = new float[9];
//Load rotation matrix into mapR
SensorManager.getRotationMatrix(temp, null,
mapGravity, mapMagnetic);
SensorManager.remapCoordinateSystem(map_temp,
SensorManager.AXIS_X,
SensorManager.AXIS_Z, mapR);
//Return the orientation values
float[] values = new float[3];
SensorManager.getOrientation(mapR, values);
//Converting to degrees
for (int i=0; i < values.length; i++) {
Double degrees = (values[i] * 180) / Math.PI;
values[i] = degrees.floatValue();
}
return values[0];
}
@Override
public void onSensorChanged(SensorEvent event) {
switch(event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
mapGravity = event.values.clone();
break;
case Sensor.TYPE_MAGNETIC_FIELD:
mapMagnetic = event.values.clone();
break;
default:
return;
}
if(mapGravity != null && mapMagnetic != null) {
getDirection();
}
}
【讨论】: