- Android
- 2011-11-02 - 更新:2012-03-23
この記事は最終更新日から1年以上経過しています。
GoogleMap上にGPSで取得した現在地を表示します。
前回からの続きなので、レイアウトとマニフェストは割愛します。
HelloMapActivity.java
package android.sample; import android.os.Bundle; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.MyLocationOverlay; public class HelloMapActivity extends MapActivity { private static MapView mMapView; private static MapController mMapController; MyLocationOverlay mOverlay; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); mMapView = (MapView)findViewById(R.id.mapview); mMapView.setBuiltInZoomControls(true); mMapController = mMapView.getController(); // 現在地のーバーレイを作成 mOverlay = new MyLocationOverlay(this, mMapView); mOverlay.enableMyLocation(); //mOverlay.enableCompass(); mOverlay.runOnFirstFix(new Runnable(){ public void run(){ GeoPoint mPoint = mOverlay.getMyLocation(); mMapController.animateTo(mPoint); } }); mMapView.getOverlays().add(mOverlay); } @Override public void onResume(){ super.onResume(); mOverlay.enableMyLocation(); //アクティビティが表示されたとき、位置情報取得を有効 //mOverlay.enableCompass(); } public void onPause(){ super.onPause(); mOverlay.disableMyLocation(); //アクティビティが隠れたとき、位置取得をストップ //mOverlay.disnableCompass(); } @Override //必須メソッドをオーバーライド protected boolean isRouteDisplayed() { // TODO 自動生成されたメソッド・スタブ return false; } }
Compassを使用するときは、センサーを使うのでSensorManagerを使用する必要があります。
その際、onPause等でunregisterListenerをしておかないとエラーが発生します。
6,493 views