Maps SDK for Android では、ユーザーの操作が制限された、地図のビットマップ画像を表示できます。これは、ライトモード マップと呼ばれます。
コードサンプル
GitHub の ApiDemos リポジトリには、ライトモードの使用方法を示すサンプルが含まれています。
- LiteDemoActivity - Java: Java でのライトモード マップの基本的な使い方
- LiteDemoActivity - Kotlin: Kotlin でのライトモード マップの基本的な使い方
- LiteListDemoActivity - Java: Java でライトモードを使って ListView に効率的に地図を表示する
- LiteListDemoActivity - Kotlin: Kotlin でライトモードを使って ListView に効率的に地図を表示する
ライトモードの概要
ライトモード マップとは、指定された場所とズームレベルの地図のビットマップ画像です。ライトモードでは、すべての地図タイプ(標準、地図 + 写真、航空写真、地形)と、完全な 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
オブジェクトの場合
Kotlin
val options = GoogleMapOptions() .liteMode(true)
Java
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_NORMAL 、MAP_TYPE_SATELLITE 、MAP_TYPE_TERRAIN 、MAP_TYPE_HYBRID 、MAP_TYPE_NONE |
ポリライン、ポリゴン、円 | サポート: ○
ライトモードのシェイプの機能は、完全な API のものと同じです。 |
投影 | サポート: ○
ライトモードの投影の機能は、完全な API のものと同じです。 |
現在地 | サポート: ○
ライトモードの現在地レイヤの機能は、完全な API のものと同じです。 |
地図のパディング | サポート: ○
ライトモードの地図のパディング機能は、完全な API のものと同じです。 |
情報ウィンドウ | サポート: ○
マーカーの title() を設定すると、ユーザーがマーカーをタップしたときにデフォルトの情報ウィンドウが表示されるようになります。情報ウィンドウをプログラムで表示するには、マーカーで showInfoWindow() を呼び出します。InfoWindowAdapter インターフェースからカスタムの情報ウィンドウを作成することもできます。 |
カスタム スタイルの基本地図 | サポート: 一部のみ
Maps SDK for Android では、基本地図のカスタム スタイルがサポートされています。ライトモードでは、JSON ベースのカスタム スタイルのみがサポートされます。スタイル付き地図をレンダリングするためにマップ ID を必要とするクラウドベースのスタイル設定はサポートされていません。
また、ダークモードを使用するための地図のカラーパターンの設定もライトモードではサポートされていません。
|
マーカー | サポート: 一部のみ
マーカーを追加すると、クリック イベントに応答することができます。カスタムのマーカー アイコンを追加することもできます。マーカーをドラッグ可能にすることはできません。ライトモード マップのマーカーは平面のため、回転できません。 |
カメラの位置、ズーム、アニメーション | サポート: 一部のみ
カメラ ターゲットとズームは設定できますが、傾斜と方位は設定できません。
ライトモードでは、ズームレベルは最も近い整数になるよう四捨五入されます。
|
地図のイベント | サポート: 一部のみ
ライトモードでは ライトモードの地図でクリック イベントを無効にするには、 詳しくは、イベントに関するドキュメントをご覧ください。 |
構内図と建物 | サポート: ×
ライトモードでは、Maps Static API と同じタイルが表示されます。
つまり、屋内の構内図は、デフォルトのタイルに埋め込まれている場合は表示されますが、埋め込まれていない場合は表示されません。また、表示されているレベルを変更したり、レベルピッカーを操作したりすることもできません。 |
交通状況レイヤ | サポート: ×
ライトモードでは GoogleMap.setTrafficEnabled() はサポートされていません。 |
地面オーバーレイ | サポート: ×
ライトモードでは GoogleMap.addGroundOverlay() はサポートされていません。 |
タイル オーバーレイ | サポート: ×
ライトモードでは GoogleMap.addTileOverlay() はサポートされていません。 |
操作 | サポート: ×
ライトモードでは操作はサポートされていません。操作を有効または無効にしても、それが反映されることはありません。 |
ストリートビュー | サポート: ×
ライトモードではストリートビューはサポートされていません。 |