GoogleMap Android API v2 使い方#01
- 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




