カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

GoogleMap Android API v2 使い方#01

この記事は最終更新日から1年以上経過しています。

今回は地図の基本設定と、カメラ位置とズームレベルの変更の方法をご紹介します。
Android2.x系、3.1.x系以上の2パターンを紹介しています。

API v2の導入方法については以下をご覧ください。
[Google Maps Android API v2]

2014-08-18 追記
GooglePlay開発者サービス(GooglePlayServices)がAndroid2.2はサポートしなくなりました。
そのため、Android2.2ではGoogleMap Android API v2が利用できません。

Android2.x系でも動作するように作成する場合

メインとなるFragmentActivityを継承したクラスに機能を実装していきます。

1public class MainActivity extends FragmentActivity

変数の宣言

マップオブジェクトを生成する関数を作成

1private void setUpMapIfNeeded() {
2 
3    if (mMap == null) {
4 
5        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
6                .getMap();
7 
8    }
9 
10}

作成した関数をActivityのonCreateで実行します。

1@Override
2protected void onCreate(Bundle savedInstanceState) {
3    super.onCreate(savedInstanceState);
4    setContentView(R.layout.activity_main);
5 
6    setUpMapIfNeeded();
7}
マップの各種設定を指定する場合

まず変数の宣言

1private GoogleMap mMap;
2private UiSettings mUiSettings;


先程作成した関数を修正します。

1private void setUpMapIfNeeded() {
2 
3    if (mMap == null) {
4 
5        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
6                .getMap();
7 
8        if (mMap != null) {
9            mUiSettings = mMap.getUiSettings();
10            mUiSettings.setCompassEnabled(true);
11            mUiSettings.setMyLocationButtonEnabled(false);
12            mUiSettings.setRotateGesturesEnabled(false);
13        }
14 
15    }
16 
17}
setCompassEnabled 北を指すコンパス表示の有効/無効を設定します。
setMyLocationButtonEnabled 現在地ボタンの表示有無を設定します。
※現在地が取得可能な場合に限ります。
setRotateGesturesEnabled 回転ジェスチャーを有効にするかどうかを設定します。

UiSettingsの詳細は
http://developer.android.com/intl/ja/reference/com/google/android/gms/maps/UiSettings.html

レイアウトXML

1<?xml version="1.0" encoding="utf-8"?>
2<fragment xmlns:android="http://schemas.android.com/apk/res/android"
3    android:id="@+id/map"
4    android:layout_width="match_parent"
5    android:layout_height="match_parent"
6    class="com.google.android.gms.maps.SupportMapFragment" >
7 
8</fragment>
カメラ位置を変更する

指定した場所を指定したズームレベルで表示するときはcom.google.android.gms.maps.CameraUpdateを使います。

1CameraUpdate cu =
2        CameraUpdateFactory.newLatLng(
3                new LatLng(35.65858, 139.745433)); //東京タワー
4mMap.moveCamera(cu);
5mMap.animateCamera(CameraUpdateFactory.zoomTo(15));

APIレベル12(Android 3.1.x)以上をターゲットとする場合

Android 3.1.x以上をターゲットとする場合、FragmentActivityではなくActivityを継承します。

1public class MainActivity extends Activity

変数の宣言

マップオブジェクトを生成する関数を作成
こちらもSupportMapFragmentではなくMapFragmentを使用します。(com.google.android.gms.maps.MapFragment)

1private void setUpMapIfNeeded() {
2 
3    if (mMap == null) {
4 
5        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
6                .getMap();
7 
8    }
9 
10}

レイアウトXMLは以下のようになります。

1<?xml version="1.0" encoding="utf-8"?>
2<fragment xmlns:android="http://schemas.android.com/apk/res/android"
3    android:id="@+id/map"
4    android:layout_width="match_parent"
5    android:layout_height="match_parent"
6    class="com.google.android.gms.maps.MapFragment" >
7 
8</fragment>

GoogleMapOptionsを使用する場合

GoogleMapOptionsを使用する場合はMapFragmentのインスタンスを以下のように作成します。

1// 登録したタグから MapFragment を取得する(デバイス回転などの再生成対策)
2mMapFragment = (SupportMapFragment) getSupportFragmentManager()
3        .findFragmentById(R.id.map);
4if (mMapFragment == null) {
5    // GoogleMapのオプションを設定する
6    GoogleMapOptions options = new GoogleMapOptions();
7    options.useViewLifecycleInFragment(false);
8    options.zOrderOnTop(false);
9 
10    // MapFragment を作成する(デフォルトの GoogleMapOption の場合は引数無し)
11    mMapFragment = SupportMapFragment.newInstance(options);
12    getSupportFragmentManager().beginTransaction()
13            .add(android.R.id.content, mMapFragment)
14            .commit();
15}

GoogleMapOptionsの詳細は
http://developer.android.com/intl/ja/reference/com/google/android/gms/maps/GoogleMapOptions.html

この記事がお役に立ちましたらシェアお願いします
2,600 views

コメントは受け付けていません。