請記住,這不是一個理想的方法,因爲地圖上的文本是一個靜態圖像,並會隨地圖塊一起旋轉(在某些時候它會顛倒) 。
下面是如何將MapView
放入您自己的Layout
小部件並旋轉它的示例。我已經使用OpenStreetMaps完成了它,但Google地圖應該完全相同。
首先由它製造的「旋轉」 Layout
部件
package com.eli.util;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.widget.LinearLayout;
public class RotatingLinearLayout extends LinearLayout {
private final int mDiagonal;
private float mBearing;
public RotatingLinearLayout(final Context pContext, final AttributeSet pAttrs) {
super(pContext, pAttrs);
final DisplayMetrics dm = pContext.getResources().getDisplayMetrics();
mDiagonal = (int) Math.hypot(dm.widthPixels, dm.heightPixels);
}
public void setBearing(final float pBearing) {
mBearing = pBearing;
}
@Override
protected void dispatchDraw(final Canvas pCanvas) {
pCanvas.rotate(-mBearing, getWidth() >> 1, getHeight() >> 1);
super.dispatchDraw(pCanvas);
}
@Override
protected void onMeasure(final int pWidthMeasureSpec,
final int pHeightMeasureSpec) {
final int widthMode = MeasureSpec.getMode(pWidthMeasureSpec);
final int heightMode = MeasureSpec.getMode(pHeightMeasureSpec);
super.onMeasure(MeasureSpec.makeMeasureSpec(mDiagonal, widthMode), MeasureSpec.makeMeasureSpec(mDiagonal, heightMode));
}
}
環繞你的MapView
在layout.xml
<com.eli.util.RotatingLinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/rotating_layout">
<org.osmdroid.views.MapView
android:id="@+id/map_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"/>
</com.eli.util.RotatingLinearLayout>
現在,每當你收到一個地理修復時間,更新旋轉的軸承佈局,它應該轉向。
見我的答案在這裏:旋轉MapView的Android中(http://stackoverflow.com/a/12126276/546054) – TouchBoarder 2012-10-14 20:27:26