このページでは、Maps 3D SDK for Android を使用して Android アプリに基本的な 3D 地図を追加する方法の例について説明します。このページの手順では、設定ページの手順が完了しており、次のものが用意されていることを前提としています。
- Maps 3D SDK for Android が有効になっている Google Cloud プロジェクト
- Maps 3D SDK for Android で使用するように構成された API キー
- Maps 3D SDK for Android で使用するように設定された Android Studio プロジェクト
これらの前提条件の詳細については、セットアップをご覧ください。
パート 1: レイアウト ファイル(activity_main.xml
)を更新して Map3DView
コンポーネントを追加する
Map3DView
コンポーネントは、アプリ内で 3D 地図をレンダリングするビューです。次の手順では、コンポーネントを追加し、カメラの位置や関連する属性など、地図の初期状態を設定します。
メイン アクティビティのレイアウト ファイルを開きます。通常は
app/src/main/res/layout/activity_main.xml
にあります。ルート
ConstraintLayout
(またはルート レイアウト要素)に、map3d
XML 名前空間を追加します。xmlns:map3d="http://schemas.android.com/apk/res-auto"
「Hello World!」と表示されるデフォルトの
<TextView>
を削除します。Map3DView
コンポーネントをレイアウトに追加します。カメラの位置やその他の属性をカスタマイズできます。<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:map3d="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <com.google.android.gms.maps3d.Map3DView android:id="@+id/map3dView" android:layout_width="match_parent" android:layout_height="match_parent" map3d:mode="hybrid" map3d:centerLat="38.544012" map3d:centerLng="-107.670428" map3d:centerAlt="2427.6" map3d:heading="310" map3d:tilt="63" map3d:range="8266" map3d:roll="0" map3d:minAltitude="0" map3d:maxAltitude="1000000" map3d:minHeading="0" map3d:maxHeading="360" map3d:minTilt="0" map3d:maxTilt="90" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
パート 2: MainActivity.kt を更新する
次の手順では、パート 1 で activity_main.xml
ファイルに追加した Map3DView
コンポーネントを初期化し、コンポーネントのライフサイクル イベントを管理します。
通常
app/src/main/java/com/example/yourpackagename/MainActivity.kt
にあるMainActivity.kt
ファイルを開きます。Maps 3D SDK for Android に必要なインポートを追加します。
import com.google.android.gms.maps3d.GoogleMap3D import com.google.android.gms.maps3d.Map3DView import com.google.android.gms.maps3d.OnMap3DViewReadyCallback
MainActivity
クラスを変更してOnMap3DViewReadyCallback
を実装します。class MainActivity : AppCompatActivity(), OnMap3DViewReadyCallback {
Map3DView
とGoogleMap3D
の変数を宣言します。private lateinit var map3DView: Map3DView private var googleMap3D: GoogleMap3D? = null
onCreate
メソッドで、setContentView(...)
とViewCompat.setOnApplyWindowInsetsListener
ブロックの後に、map3DView
を初期化し、そのonCreate
ライフサイクル メソッドを呼び出し、地図を非同期でリクエストします。override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_main) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } map3DView = findViewById(R.id.map3dView) map3DView.onCreate(savedInstanceState) map3DView.getMap3DViewAsync(this) }
onMap3DViewReady
メソッドをオーバーライドします。このコールバックは、地図を使用できる状態になるとトリガーされます。override fun onMap3DViewReady(googleMap3D: GoogleMap3D) { // Interact with the googleMap3D object here this.googleMap3D = googleMap3D // You can now make calls to the googleMap3D object, e.g., // googleMap3D.cameraController.flyTo(camera { ... }) }
次のオーバーライドを
MainActivity
に追加して、Activity からMap3DView
にライフサイクル イベントを転送します。override fun onStart() { super.onStart() map3DView.onStart() } override fun onResume() { super.onResume() map3DView.onResume() } override fun onPause() { map3DView.onPause() super.onPause() } override fun onStop() { map3DView.onStop() super.onStop() } override fun onDestroy() { map3DView.onDestroy() super.onDestroy() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) map3DView.onSaveInstanceState(outState) } override fun onLowMemory() { super.onLowMemory() map3DView.onLowMemory() }
パート 3: Gradle の同期と実行
アプリのレイアウトとアクティビティを更新したので、アプリをビルドして実行し、3D 地図ビューを確認できます。
プロジェクトを Gradle と同期するには、[File] > [Sync Project with Gradle Files] を選択します。
エミュレータまたは実機でアプリをビルドして実行するには、[Run] > [Run] を選択します。
すべてが正しく構成されていれば、アプリに 3D 地図が表示され、activity_main.xml
で指定した座標の近くが中心に表示されます。
次のステップ
アプリに基本的な 3D マップを追加したので、カメラパス アニメーション、3D マーカー、ポリゴンなど、Maps 3D SDK for Android の高度な機能を試してみましょう。