지도는 API에서 UIView
의 서브클래스인 GMSMapView
클래스로 표현됩니다. 지도는 iOS용 Maps SDK의 가장 중요한 객체이며 마커, 다중선 등의 다른 객체를 추가, 삭제, 관리하는 데 필요한 메서드를 제공합니다.
소개
iOS용 Maps SDK를 사용하면 iOS 애플리케이션에 Google 지도를 표시할 수 있습니다. 이 지도는 Google 지도 iOS 앱에 표시되는 지도와 모양이 동일하며 SDK는 대부분의 동일한 지형지물을 표시합니다.
매핑 기능 외에도 API에서는 iOS UI 모델과 일치하는 다양한 상호작용을 지원합니다. 예를 들어 탭 및 더블탭과 같은 사용자 동작에 반응하는 응답기를 정의하여 지도와의 상호작용을 설정할 수 있습니다.
지도 객체를 사용할 때 주요 클래스는 GMSMapView
클래스입니다.
GMSMapView
는 다음 작업을 자동으로 처리합니다.
- Google 지도 서비스에 연결
- 지도 타일 다운로드
- 기기 화면에 타일 표시
- 화면 이동 및 확대/축소와 같은 다양한 컨트롤 표시
- 화면 이동 및 확대/축소 동작 시 지도를 이동하거나 확대/축소하여 응답
- 지도의 보기 각도를 틸트하는 방식으로 두 손가락 제스처에 반응
이러한 자동 작업 외에도 GMSMapView
클래스에 노출된 속성과 메서드를 통해 지도의 동작과 모양을 제어할 수 있습니다. GMSMapView
를 사용하면 마커와 지면 오버레이, 폴리라인을 추가, 삭제하고, 표시되는 지도 유형을 변경하고, GMSCameraPosition
클래스를 통해 지도에 표시되는 항목을 제어할 수 있습니다.
SwiftUI로 지도 빌드
SwiftUI는 선언적 접근 방식을 사용하여 UI를 만드는 추가 방법을 제공합니다. SwiftUI에 뷰가 다양한 다양한 상태와 함께 어떻게 표시되는지 확인할 수 있으며, 나머지는 시스템에서 자동으로 처리합니다. SwiftUI는 이벤트 또는 사용자 작업으로 인해 기본 상태가 변경될 때마다 뷰 업데이트를 처리합니다.
iOS용 Maps SDK는 UIKit
를 기반으로 빌드되며 SwiftUI 호환 뷰를 제공하지 않습니다. SwiftUI에서 지도를 추가하려면 UIViewRepresentable
또는 UIViewControllerRepresentable
를 준수해야 합니다. 자세한 내용은 SwiftUI로 iOS 앱에 지도 추가 Codelab을 참고하세요.
지도 추가하기
지도를 추가하는 기본 단계는 다음과 같습니다.
SDK와 API 키를 가져온 후 필수 프레임워크를 추가하려면 다음 단계를 따르세요.
AppDelegate
에서GMSServices
의provideAPIKey:
클래스 메서드에 API 키를 제공합니다.ViewController
를 만들거나 업데이트합니다. 이 뷰 컨트롤러가 표시될 때 지도가 표시되는 경우viewDidLoad
메서드 내에서 지도를 만들어야 합니다.지도 뷰를 초기화할 때
GMSMapViewOptions
를 사용하여 구성 옵션을 설정합니다. 속성에는frame
,camera
,mapID
,backgroundColor
또는screen
가 포함됩니다.GMSCameraPosition
객체를 사용하여 지도 옵션camera
속성을 설정합니다. 이는 지도의 중심과 확대/축소 수준을 지정합니다.GMSMapView
options:
메서드를 사용하여GMSMapView
클래스를 생성하고 인스턴스화합니다. 이 지도가 뷰 컨트롤러의 유일한 뷰로 사용될 경우 지도 옵션frame
의 기본값CGRectZero
을 뷰frame
로 사용할 수 있습니다. 지도의 크기가 자동으로 조절됩니다.GMSMapView
객체를 뷰 컨트롤러의 뷰로 설정합니다. 예를 들면self.view = mapView;
입니다.
아래 예시는 싱가포르 도심을 중심으로 하는 지도를 앱에 추가합니다.
Swift
import GoogleMaps class MapObjects : UIViewController { override func viewDidLoad() { super.viewDidLoad() let options = GMSMapViewOptions() options.camera = GMSCameraPosition(latitude: 1.285, longitude: 103.848, zoom: 12) options.frame = self.view.bounds; let mapView = GMSMapView(options:options) self.view = mapView } }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:1.285 longitude:103.848 zoom:12]; options.frame = self.view.bounds; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; self.view = mapView; }
위의 단계를 진행한 후에 GMSMapView
객체를 추가로 구성할 수 있습니다.
다음 단계
이 단계를 완료하면 지도 설정을 구성할 수 있습니다.