이 페이지에서는 Android용 지도 3D SDK를 사용하여 Android 앱에 기본 3D 지도를 추가하는 방법을 보여주는 예를 설명합니다. 이 페이지의 안내에서는 설정 페이지의 단계를 이미 완료했으며 다음이 있다고 가정합니다.
- Android용 지도 3D SDK가 사용 설정된 Google Cloud 프로젝트
- Android용 지도 3D SDK와 함께 사용하도록 구성된 API 키
- Android용 지도 3D SDK와 함께 사용하도록 설정된 Android 스튜디오 프로젝트
이러한 기본 요건에 대한 자세한 내용은 설정을 참고하세요.
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
구성요소를 초기화하고 구성요소 수명 주기 이벤트를 관리합니다.
MainActivity.kt
파일을 엽니다. 일반적으로app/src/main/java/com/example/yourpackagename/MainActivity.kt
에 있습니다.Android용 지도 3D SDK에 필요한 가져오기를 추가합니다.
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
에 추가하여 활동에서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 마커, 다각형과 같은 Android용 Maps 3D SDK의 고급 기능을 살펴볼 수 있습니다.