ライトモード

Maps SDK for Android では、ユーザーの操作が制限された、地図のビットマップ画像を表示できます。これは、ライトモード マップと呼ばれます。

コードサンプル

GitHub の ApiDemos リポジトリには、ライトモードの使用方法を示すサンプルが含まれています。

ライトモードの概要

ライトモード マップは、指定された場所とズームレベルの地図のビットマップ画像です。ライトモードでは、すべてのマップタイプ(標準、ハイブリッド、衛星、地形)と、完全な API で提供される機能の一部がサポートされています。ライトモードは、多数の地図を 1 つのストリームで提供する場合や、地図が小さすぎて操作できない場合に役立ちます。

ユーザーは、表示している地図をズームまたはパンすることはできません。地図上のアイコンを使用して、Google マップ モバイルアプリで地図を表示することや、ルートをリクエストすることは可能です。

ライトモード マップの追加

ライトモードでは、完全な Google Maps Android API と同じクラスとインターフェースを使用します。GoogleMap は次の方法でライトモードに設定できます。

  • MapView または MapFragment の XML 属性として設定する
  • または GoogleMapOptions オブジェクトで設定する

MapView または MapFragment の XML 属性として設定する

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    map:cameraZoom="13"
    map:mapType="normal"
    map:liteMode="true"/>

GoogleMapOptions オブジェクトで設定する

GoogleMapOptions options = new GoogleMapOptions().liteMode(true);

地図の初期状態の設定について詳しくは、地図オブジェクトに関するガイドをご覧ください。

地図ビューまたはルート リクエストを起動するインテント

デフォルトでは、地図の右下のツールバーに、Google マップ モバイルアプリで地図を表示したり、ルートをリクエストしたりするためのアイコンが表示されます。ツールバーを無効にするには、UiSettings.setMapToolbarEnabled(false) を呼び出します。詳しくは、ツールバーに関するドキュメントをご覧ください。

また、デフォルトでは、ユーザーが地図をタップすると、API で Google マップ モバイルアプリが起動されます。これをオーバーライドするには、GoogleMap.setOnMapClickListener() を使用して独自のリスナーを設定します。MapView または MapFragment を含むビューで setClickable() を呼び出して、地図のクリック イベントを無効にすることもできます。これら 2 つの手法について詳しくは、イベントに関するドキュメントをご覧ください。

ライフサイクル イベント

API を完全なインタラクティブ モードで使用する場合は、MapView クラスで、すべてのアクティビティ ライフサイクル メソッドを MapView クラスの対応するメソッドに転送する必要があります。ライフサイクル メソッドには、onCreate()onDestroy()onResume()onPause() などがあります。

ライトモードMapView クラスを使用する場合は、ライフサイクル イベントを転送しなくてもかまいませんが、以下の場合は例外となります。

  • onCreate() の呼び出しは必須です。呼び出さなかった場合は、地図が表示されません。
  • ライトモードの地図に現在地のドットを表示して、デフォルトの位置情報を使用する場合は、onResume()onPause() を呼び出す必要があります。これは、位置情報の更新がこれらの呼び出しの間でのみ行われるためです。独自の位置情報を使用する場合は、これら 2 つのメソッドを呼び出す必要はありません。

サポートされている API 機能

以下の表は、ライトモード マップの動作を API の機能の領域ごとにまとめたものです。ライトモードでサポートされていないメソッドがアプリで呼び出された場合は、API で警告メッセージが記録されます。

機能
地図タイプ
サポートされているか?
GoogleMapOptions.mapType()GoogleMap.setMapType() で使用可能な地図タイプ: MAP_TYPE_NORMALMAP_TYPE_SATELLITEMAP_TYPE_TERRAINMAP_TYPE_HYBRIDMAP_TYPE_NONE
ポリライン、ポリゴン、円
サポートされているか?
ライトモードのシェイプの機能は、完全な API のものと同じです。
投影
サポートされているか?
ライトモードの投影の機能は、完全な API のものと同じです。
現在地
サポートされているか?
ライトモードの現在地レイヤの機能は、完全な API のものと同じです。
地図のパディング
サポートされているか?
ライトモードの地図のパディング機能は、完全な API のものと同じです。
情報ウィンドウ
サポートされているか?
マーカーの title() を設定すると、ユーザーがマーカーをタップしたときにデフォルトの情報ウィンドウが表示されるようになります。情報ウィンドウをプログラムで表示するには、マーカーで showInfoWindow() を呼び出します。InfoWindowAdapter インターフェースからカスタムの情報ウィンドウを作成することもできます。
カスタム スタイルの基本地図
サポートされているか?
Maps SDK for Android では、基本地図のカスタム スタイルがサポートされています。
マーカー
サポートされているか?一部のみ
マーカーを追加すると、クリック イベントに応答することができます。カスタムのマーカー アイコンを追加することもできます。マーカーをドラッグ可能にすることはできません。ライトモード マップのマーカーは平面のため、回転できません。
カメラの位置、ズーム、アニメーション
サポートされているか?一部のみ

カメラの対象とズームは設定できますが、傾斜と方向は設定できません。 ライトモードでは、ズームレベルは最も近い整数になるよう四捨五入されます。 GoogleMap.moveCamera() を呼び出すと、ライトモード マップの別の画像が表示されます。カメラの設定と操作について詳しくは、ビューの変更に関する説明をご覧ください。

GoogleMap.animateCamera() を呼び出しても、カメラの移動はアニメーション表示されません。カメラのビューはすぐに新しい位置に移動します。

地図のイベント
サポートされているか?一部のみ

ライトモードでは GoogleMap.setOnMapClickListener()GoogleMap.setOnMapLongClickListener() がサポートされています。

ライトモードの地図でクリック イベントを無効にするには、MapView または MapFragment が含まれるビューで setClickable() を呼び出します。これは、たとえば 1 つ以上の地図をリスト表示していて、クリック イベントで地図とは無関係なアクションを呼び出すようにしたい場合に役立ちます。

詳しくは、イベントに関するドキュメントをご覧ください。

インドアマップと建物
サポートされているか?×
ライトモードでは、Maps Static API と同じタイルが表示されます。 つまり、屋内の構内図は、デフォルトのタイルに埋め込まれている場合は表示されるということです。埋め込まれていない場合は表示されません。また、表示されているレベルを変更したり、レベルピッカーを操作したりすることもできません。
交通状況レイヤ
サポートされているか?×
ライトモードでは GoogleMap.setTrafficEnabled() はサポートされていません。
地面オーバーレイ
サポートされているか?×
ライトモードでは GoogleMap.addGroundOverlay() はサポートされていません。
タイル オーバーレイ
サポートされているか?×
ライトモードでは GoogleMap.addTileOverlay() はサポートされていません。
操作
サポートされているか?×
ライトモードでは操作はサポートされていません。操作を有効または無効にしても、それが反映されることはありません。
ストリートビュー
サポートされているか?×
ライトモードではストリートビューはサポートされていません。