这是我的代码到目前为止,正在改变标记关于平板电脑位置的旋转。
float[] mGravity;
float[] mGeomagnetic;
Float azimut;
Marker Mymarker;
MarkerOptions MyMarkerOption = new MarkerOptions();
public void onSensorChanged(SensorEvent event) {
if(GotLocation){
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
mGravity = event.values;
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];
boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
MyLocation = new LatLng(currentLatitude, currentLongitude);
if (success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
azimut = orientation[0];
float azimuthInRadians = orientation[0];
float azimuthInDegress = (float)(Math.toDegrees(azimuthInRadians)+360)%360;
if(location_marker == 0){
MyMarkerOption.position(MyLocation);
Mymarker = map.addMarker(MyMarkerOption);
location_marker++;
}
Mymarker.setPosition(MyLocation);
Mymarker.setRotation(azimuthInDegress);
Mymarker.setFlat(true);
}
}
}
}
我希望标记的旋转在给定的lat-long位置上发生变化。所以我想现在算法正在计算平板电脑的 azimuthInDegress 。我想它会根据给定的点来计算它。
我发现这个thread有人在问同样的事情,但我不知道如何为我的代码实现这个解决方案。线程也是5岁,所以也许现在还有另一个解决方案。