Categories
SugiBlog ホームページ制作・システム開発

GoogleMap上にGPSで取得した現在地を表示

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をしておかないとエラーが発生します。

2,822 views

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*