지면 오버레이는 위도/경도 좌표에 연결된 지도 위의 오버레이로, 지도에서 드래그하거나 확대/축소하면 움직입니다.
소개
지면 오버레이는 지도에 고정된 이미지입니다. 마커와 달리 지면 오버레이는 화면이 아니라 지표면 방향을 향하므로 지도의 방향을 회전하거나 기울이거나 확대/축소하면 이미지의 방향이 바뀝니다.
그라운드 오버레이를 추가하려면 아이콘과 경계를 모두 정의하는 GMSGroundOverlay
객체를 만드세요. 둘 중 하나라도 지정하지 않으면 지면 오버레이가 지도에 표시되지 않습니다. 선택사항으로 지도에서 이미지의 배치에 영향을 미치는 추가 설정을 지정할 수도 있습니다.
필요한 옵션을 정의한 후 이 객체의 map
속성을 설정하여 오버레이를 추가합니다.
오버레이 추가
- 새
GMSGroundOverlay
객체를 인스턴스화합니다. icon
속성을UIImage
의 인스턴스로 설정합니다.bounds
속성을GMSCoordinateBounds
의 인스턴스로 설정합니다. 경계는 이미지의 남서쪽 모서리와 북동쪽 모서리를 나타냅니다.- 선택사항인 속성(예:
bearing
및zoomLevel
)을 원하는 대로 설정합니다. map
속성을 설정합니다. 이미지가 지도에 나타납니다.
아래의 예는 기존 GMSMapView
객체에 지면 오버레이를 추가하는
방법을 보여줍니다.
Swift
let southWest = CLLocationCoordinate2D(latitude: 40.712216, longitude: -74.22655) let northEast = CLLocationCoordinate2D(latitude: 40.773941, longitude: -74.12544) let overlayBounds = GMSCoordinateBounds(coordinate: southWest, coordinate: northEast) // Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg let icon = UIImage(named: "newark_nj_1922") let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon) overlay.bearing = 0 overlay.map = mapView
Objective-C
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(40.712216,-74.22655); CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(40.773941,-74.12544); GMSCoordinateBounds *overlayBounds = [[GMSCoordinateBounds alloc] initWithCoordinate:southWest coordinate:northEast]; // Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg UIImage *icon = [UIImage imageNamed:@"newark_nj_1922"]; GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon]; overlay.bearing = 0; overlay.map = mapView;
오버레이 삭제
GMSGroundOverlay
의 map
속성을 nil
로 설정하여 지도에서 지형지물 오버레이를 삭제할 수 있습니다. 또는 GMSMapView
clear
메서드를 호출하여 현재 지도에 있는 모든 오버레이 (그라운드 오버레이 포함)를 삭제할 수 있습니다.
Swift
mapView.clear()
Objective-C
[mapView clear];
지면 오버레이를 지도에 추가한 후 수정하려면 GMSGroundOverlay
객체를 보유하고 있어야 합니다. 나중에 이 객체를 변경하여 그라운드 오버레이를 수정할 수 있습니다.
Swift
let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon) overlay.bearing = 0 overlay.map = mapView // ... overlay.isTappable = true
Objective-C
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon]; overlay.bearing = 0; overlay.map = mapView; // ... overlay.tappable = YES;
이벤트
사용자가 오버레이를 탭하는 경우 등과 같이 지도에서 발생하는 이벤트를 수신할 수 있습니다. 이벤트를 수신하려면 GMSMapViewDelegate
프로토콜을 구현해야 합니다. 이벤트 가이드와 GMSMapViewDelegate
의 메서드 목록을 참고하세요.