- Android
- 2014-08-11 - 更新:2022-09-01
今回は地図の基本設定と、カメラ位置とズームレベルの変更の方法をご紹介します。
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を継承したクラスに機能を実装していきます。
public class MainActivity extends FragmentActivity
変数の宣言
private GoogleMap mMap;
マップオブジェクトを生成する関数を作成
private void setUpMapIfNeeded() { if (mMap == null) { mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); } }
作成した関数をActivityのonCreateで実行します。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setUpMapIfNeeded(); }
マップの各種設定を指定する場合
まず変数の宣言
private GoogleMap mMap; private UiSettings mUiSettings;
先程作成した関数を修正します。
private void setUpMapIfNeeded() { if (mMap == null) { mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); if (mMap != null) { mUiSettings = mMap.getUiSettings(); mUiSettings.setCompassEnabled(true); mUiSettings.setMyLocationButtonEnabled(false); mUiSettings.setRotateGesturesEnabled(false); } } }
setCompassEnabled | 北を指すコンパス表示の有効/無効を設定します。 |
---|---|
setMyLocationButtonEnabled | 現在地ボタンの表示有無を設定します。 ※現在地が取得可能な場合に限ります。 |
setRotateGesturesEnabled | 回転ジェスチャーを有効にするかどうかを設定します。 |
UiSettingsの詳細は
http://developer.android.com/intl/ja/reference/com/google/android/gms/maps/UiSettings.html
レイアウトXML
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment" > </fragment>
カメラ位置を変更する
指定した場所を指定したズームレベルで表示するときはcom.google.android.gms.maps.CameraUpdateを使います。
CameraUpdate cu = CameraUpdateFactory.newLatLng( new LatLng(35.65858, 139.745433)); //東京タワー mMap.moveCamera(cu); mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
APIレベル12(Android 3.1.x)以上をターゲットとする場合
Android 3.1.x以上をターゲットとする場合、FragmentActivityではなくActivityを継承します。
public class MainActivity extends Activity
変数の宣言
private GoogleMap mMap;
マップオブジェクトを生成する関数を作成
こちらもSupportMapFragmentではなくMapFragmentを使用します。(com.google.android.gms.maps.MapFragment)
private void setUpMapIfNeeded() { if (mMap == null) { mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) .getMap(); } }
レイアウトXMLは以下のようになります。
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment" > </fragment>
GoogleMapOptionsを使用する場合
GoogleMapOptionsを使用する場合はMapFragmentのインスタンスを以下のように作成します。
// 登録したタグから MapFragment を取得する(デバイス回転などの再生成対策) mMapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); if (mMapFragment == null) { // GoogleMapのオプションを設定する GoogleMapOptions options = new GoogleMapOptions(); options.useViewLifecycleInFragment(false); options.zOrderOnTop(false); // MapFragment を作成する(デフォルトの GoogleMapOption の場合は引数無し) mMapFragment = SupportMapFragment.newInstance(options); getSupportFragmentManager().beginTransaction() .add(android.R.id.content, mMapFragment) .commit(); }
GoogleMapOptionsの詳細は
http://developer.android.com/intl/ja/reference/com/google/android/gms/maps/GoogleMapOptions.html