
이 페이지에서는 iOS용 지도 3D SDK를 사용하여 iOS 앱에 기본 3D 지도를 추가하는 방법의 예를 설명합니다. 이 페이지의 안내에서는 사용자가 이미 설정 페이지의 단계를 완료했으며 다음 항목이 있다고 가정합니다.
- iOS용 지도 3D SDK가 사용 설정된 Google Cloud 프로젝트
- iOS용 지도 3D SDK의 API 키
- iOS용 Maps 3D SDK 패키지가 추가된 Xcode 버전 16.0 이상
이러한 기본 요건에 대한 자세한 내용은 설정을 참조하세요.
1부: 기본 SwiftUI 앱 만들기
- Xcode에서 새 앱을 만듭니다.
- 제품 이름을
Hello3DWorld로 설정하고 조직 식별자를com.example로 설정합니다. 패키지 이름은com.example.Hello3DWorld이어야 합니다. - SwiftUI 인터페이스를 선택합니다.
- 앱에 지도 3D 라이브러리를 추가합니다. 설정 섹션의 안내를 참고하세요.
2부: 지도 추가
ContentView.swift파일을 엽니다. 앱의 진입점이자 기본 탐색입니다.SwiftUI및GoogleMaps3D패키지를 가져옵니다.본문 선언 내의 모든 코드를 Map(mode: .hybrid)로 바꿉니다.
Map를 초기화하기 위해 제공해야 하는 최소 초기 구성은MapMode입니다..hybrid.roadmap또는.satellite
ContentView.swift파일은 다음과 같이 표시됩니다.import SwiftUI import GoogleMaps3D struct ContentView: View { var body: some View { Map(mode: .hybrid) } } #Preview { ContentView() }
3부: API 키 설정
API 키는 지도가 초기화되기 전에 설정해야 합니다. 이렇게 하려면 지도가 포함된
View의init()이벤트 핸들러에서Map.apiKey를 설정합니다.import SwiftUI import GoogleMaps3D struct ContentView: View { init () { Map.apiKey = "YOUR_API_KEY" } var body: some View { Map(mode: .hybrid) } }
4부: 카메라를 사용하여 지도 뷰 제어하기
3D 지도 뷰는 Camera 클래스로 제어됩니다. 이 단계에서는 위치, 고도, 방향, 기울기, 롤, 범위를 지정하여 지도 뷰를 맞춤설정하는 방법을 알아봅니다.
initialCamera속성을 포함하도록Map()함수 호출을 변경합니다.initialCamera를 초기화하여 맨해튼 시내의 뷰를 표시합니다.import SwiftUI import GoogleMaps3D struct ContentView: View { init () { Map.apiKey = "YOUR_API_KEY" } var body: some View { Map(initialCamera: .init( center: .init(latitude: 40.748339, longitude: -73.985912, altitude: 211.1), heading: 52, tilt: 68, roll: 0.0, range: 1039, fieldOfView: .degrees(50) ), mode: .hybrid) } }
위의 코드는 다음 매개변수의 값을 설정합니다.
center: 카메라 위치를 나타내는LatLngAltitudeheading: 카메라가 가리키는 북쪽에서부터의 방위(단위: 도)입니다.tilt: 기울기 각도(도)입니다. 0은 바로 위를, 90은 수평을 나타냅니다.roll: 카메라의 수직 평면을 기준으로 한 롤 각도(도)입니다.range: 위도, 경도 위치에서 카메라까지의 거리(미터)fieldOfView: 카메라 시야를 나타내는 각도
이러한 추가 매개변수를 제공하지 않으면 기본값이 사용됩니다.
카메라 뷰에 더 많은 3D 데이터를 표시하려면 초기 매개변수를 설정하여 더 가깝고 기울어진 뷰를 표시합니다.
5부: 앱 미리보기 및 실행
Xcode Preview 추가
미리보기는 시뮬레이터나 외부 기기를 사용하지 않고도 앱을 보고 상호작용할 수 있는 강력한 Xcode 기능입니다.
미리보기를 추가하려면 구조체 외부에
#Preview {}코드 블록을 추가합니다.#Preview { ContentView() }앱 실행
앱을 빌드하고 실행합니다.
지도 로드 및 오류 상태
iOS용 지도 3D SDK는 Map의 상태를 관리하는 동안 내장된 시각적 피드백을 자동으로 표시합니다.
- 로드 오버레이: 지도 뷰가 처음 초기화되거나 로드될 때 중앙에 진행률 표시기가 표시됩니다.
- 오류 오버레이: 지도를 로드하지 못하면 오류 오버레이가 표시됩니다.
Map에서 style(mapID:error:)를 사용하여 클라우드 기반 지도 스타일 지정을 적용하는 경우 error 클로저를 전달하여 스타일 로드 오류를 처리할 수 있습니다.
지도 탭 이벤트 수신 대기
지도에서 탭 이벤트를 수신 대기하려면 onTap(_:) 수정자를 Map에 적용합니다.
사용자가 지도를 탭하면 클로저가 location(LatLngAltitude) 및 탭한 content(MapTapInfo.Content.map 또는 MapTapInfo.Content.place(id:))를 제공하는 MapTapInfo 값을 수신합니다. 관심 장소 상호작용에 관한 자세한 내용은 관심 장소와 상호작용을 참고하세요.
Map(mode: .hybrid)
.onTap { tapInfo in
print("Tapped at \(tapInfo.location), content: \(tapInfo.content)")
}
수고하셨습니다
앱에 3D 지도를 추가했습니다.
다음으로 카메라 경로 애니메이션, 3D 마커, 다각형과 같은 iOS용 지도 3D SDK의 고급 기능을 살펴볼 수 있습니다.