2011年3月17日木曜日

地図表示とGPSで自分の位置を表示する

参考にしたブログで使われていたAndroidバージョンが古いのかVer2.2ではコンパイルエラーが出て使えなかった。
なので、修正した。

環境:Google APIs Ver8(Android 2.2)
          eclipse(ver3.5)
          エミュレータ


以下、修正ソース

public class IamHere extends MapActivity {
    private MapView mapView;

    /** Called when the activity is first created. */
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        // マップを制御するために、マップビューとコントローラを生成する
        mapView = new MapView(this, getResources().getString(R.string.map_key));

        // Activityを有効にする
        mapView.setEnabled(true);
        // クリックできるようにする
        mapView.setClickable(true);
        // ズーム機能を使えるようにする
        mapView.setBuiltInZoomControls(true);

        setContentView(mapView);
        // テストのエミュレータ用(初期化=東京駅に設定)
        Double ido = 0.0;
        Double keido = 0.0;
        ido = 35.681382 * 1E6;
        keido = 139.766084 * 1E6;
        MapController mapController = this.mapView.getController();
        mapController.setCenter(new GeoPoint(ido.intValue(), keido.intValue()));
        mapController.setZoom(7);
    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }

    // メニューボタンが押下されたときの処理
    // メニューにアイテムを追加する
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      boolean supRetVal = super.onCreateOptionsMenu(menu);
      menu.add(0, 0, 0, "今ここにいます");

      return supRetVal;
    }

    // メニューのアイテムが選択された時の処理
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

       Double ido = 0.0;
       Double keido = 0.0;

       switch (item.getItemId()) {
           case 0:
            // 自分の居る位置(緯度、経度)を取得する
            LocationManager locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
            Location location =
                locationManager.getLastKnownLocation(
                        LocationManager.GPS_PROVIDER
            );

// 実機用
//            ido = location.getLatitude() * 1E6;
//            keido = location.getLongitude() * 1E6;


            // テストのエミュレータ用
            ido = 99.180192510714434 * 1E6;
            keido = 999.876859664917 * 1E6;
      (緯度、経度はでたらめ)

            MapController mapController = this.mapView.getController();
            mapController.animateTo(new GeoPoint(ido.intValue(), keido.intValue()));
            return true;
       }

       return false;
    }
}


1、実行すると地図が出る
2、画面タッチでズームイン、ズームアウトできる
3、メニューから「今ここにいます」を選ぶ(それしか出ない)
4、自分のいる位置が拡大表示される


次回は、自分の位置にマーカーをセットしたい


・参考URL
http://blog.goo.ne.jp/android99_2007/e/eda2ffce3464fa9b3181f0812c3e8e0c
http://android-go.seesaa.net/article/123033515.html


 
   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
   にほんブログ村

0 件のコメント: