지면 오버레이

플랫폼 선택: Android iOS JavaScript

지면 오버레이는 위도/경도 좌표에 연결된 지도의 오버레이로, 지도에서 드래그하거나 확대/축소하면 움직입니다.

소개

지면 오버레이는 지도에 고정된 이미지입니다. 마커와 달리 지면 오버레이는 화면이 아닌 지표면 방향을 향하므로 지도의 방향을 회전하거나 기울이거나 확대/축소하면 이미지의 방향이 바뀝니다.

지상 오버레이를 추가하려면 아이콘과 경계를 모두 정의하는 GMSGroundOverlay 객체를 만듭니다. 둘 중 하나를 지정하지 않으면 지면 오버레이가 지도에 표시되지 않습니다. 선택사항으로 지도에서 이미지의 배치에 영향을 미치는 추가 설정을 지정할 수도 있습니다. 필요한 옵션을 정의한 후 이 객체의 map 속성을 설정하여 오버레이를 추가합니다.

오버레이 추가

  1. GMSGroundOverlay 객체를 인스턴스화합니다.
  2. icon 속성을 UIImage의 인스턴스로 설정합니다.
  3. bounds 속성을 GMSCoordinateBounds의 인스턴스로 설정합니다. 경계는 이미지의 남서쪽 및 북동쪽 모서리를 나타냅니다.
  4. 선택사항인 속성(예: bearingzoomLevel)을 원하는 대로 설정합니다.
  5. 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;
      

오버레이 삭제

GMSGroundOverlaymap 속성을 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의 메서드 목록을 참고하세요.