정보 창을 사용하면 사용자가 마커를 탭할 때 사용자에게 정보를 표시할 수 있습니다.
정보 창은 기기 화면을 향하도록 그려지며, 그 위 중앙에 표시됩니다. 표시됩니다. 기본 정보 창에는 제목이 굵게 표시되어 있습니다. 제목 아래에 스니펫 텍스트가 있습니다
정보 창의 콘텐츠는 title
및
마커의 snippet
속성 마커를 클릭하면
title
및 snippet
속성이 모두 비어 있거나 nil
인 경우 정보 창입니다.
정보 창은 한 번에 하나만 표시됩니다. 사용자가 다른 마커를 탭하면 현재 창이 숨겨지고 새 정보 창이 열립니다. 사용자가 현재 정보 창을 표시하는 마커를 클릭하면 정보 창이 닫혔다가 다시 열립니다.
맞춤 정보 창을 만들어 텍스트 또는 이미지를 추가하세요. 맞춤 정보 창을 사용하면 팝업의 모양을 완전히 제어할 수 있습니다.
정보 창 추가
다음 스니펫은 텍스트 제목만 있는 간단한 마커를 만듭니다. 표시됩니다.
Swift
let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: position) london.title = "London" london.map = mapView
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:position]; london.title = @"London"; london.map = mapView;
snippet
속성을 사용하여 제목 아래에 작은 글꼴로 나타나는 텍스트를 추가할 수 있습니다. 정보 창 너비보다 긴 문자열은 여러 줄에 걸쳐 자동으로 줄바꿈됩니다. 매우 긴 메시지는 잘릴 수 있습니다.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView;
정보 창 표시/숨기기
정보 창은 마커의 사용자 터치 이벤트에 반응하도록 설계되었습니다.
selectedMarker
를 설정하여 정보 창을 프로그래매틱 방식으로 표시하거나 숨길 수 있습니다.
GMSMapView
의 속성입니다.
selectedMarker
을 마커의 이름으로 설정합니다.- 숨기려면
selectedMarker
를nil
로 설정합니다.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView // Show marker mapView.selectedMarker = london // Hide marker mapView.selectedMarker = nil
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView; // Show marker mapView.selectedMarker = london; // Hide marker mapView.selectedMarker = nil;
정보 창이 자동으로 새로고침되도록 설정
다음에서 tracksInfoWindowChanges
설정:
YES
또는 true
마커(새 속성 또는 정보의 콘텐츠를 원하는 경우)
대기할 필요 없이 변경 시 즉시 표시되도록 할 수 있습니다.
숨겼다가 다시 표시할 수 있습니다. 기본값은 NO
또는 false
입니다.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
tracksInfoWindowChanges
속성을 설정할 시기를 결정하려면 정보 창을 자동으로 다시 그리는 장점과 그에 따른 성능 저하를 고려해야 합니다. 예를 들면 다음과 같습니다.
- 일련의 변경이 있는 경우 속성을
YES
로 변경할 수 있습니다. 그런 다음NO
로 돌아갑니다. - 애니메이션이 실행 중이거나 콘텐츠가 비동기식으로 로드될 때
작업이 완료될 때까지 속성을
YES
로 설정해야 합니다.
이러한 경우 고려사항을 참조하세요.
마커의 iconView
속성을 사용합니다.
정보 창의 위치 변경
정보 창은 기기 화면을 기준으로 펼쳐지며 해당하는 마커 위에
중심을 맞춰 표시됩니다. 정보 창의 위치를 변경할 수 있습니다.
infoWindowAnchor
속성을 설정하여 마커를 기준으로 합니다. 이
속성은 x와 y 모두 (x,y) 오프셋으로 정의된 CGPoint
를 허용합니다.
0.0과 1.0 사이로 표시됩니다. 기본 오프셋은 (0.5, 0.0), 즉 중앙
있습니다. infoWindowAnchor
오프셋 설정은 정보를 정렬하는 데 유용합니다.
창을 맞춤 아이콘과 비교해 보겠습니다.
Swift
london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5) london.icon = UIImage(named: "house") london.map = mapView
Objective-C
london.infoWindowAnchor = CGPointMake(0.5, 0.5); london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
정보 창의 이벤트 처리
다음과 같은 정보 창 이벤트를 수신할 수 있습니다.
mapView:markerInfoWindow:
드림 — 마커가 선택되려고 할 때 호출됩니다. 필요에 따라 맞춤 정보 창을UIView
로 반환하여 다음에 사용할 수 있습니다. 표시됩니다. 자세한 내용은 아래의 맞춤 정보 창을 참고하세요.mapView:markerInfoContents:
드림 —mapView:markerInfoWindow
가 nil을 반환할 때 호출됩니다.mapView:didCloseInfoWindowOfMarker:
드림 — 마커의 정보창이 닫힐 때 호출됩니다.mapView:didLongPressInfoWindowOfMarker:
드림 — 마커의 정보창을 길게 누른 후 호출됩니다.
이벤트를 수신하려면
GMSMapViewDelegate
프로토콜 자세한 내용은
이벤트 가이드와
GMSMapViewDelegate
GitHub 여기에는 정보 창 이벤트를 처리하는 방법을 보여주는 샘플이 포함되어 있습니다.
맞춤 정보 창
맞춤 정보 창의 레이아웃을 정의하는 UIView
의 서브클래스를 만들어 정보 창의 콘텐츠를 맞춤설정합니다. 이 서브클래스에서
원하는 대로 뷰를 정의할 수 있습니다 예를 들어 커스텀
UILabel
드림
제목 및 스니펫 텍스트와 기타 뷰를 표시하는 인스턴스(예:
UIImageView
인스턴스.
ViewController
가 GMSIndoorDisplayDelegate
프로토콜을 구현하고 mapView:markerInfoWindow: 이벤트의 리스너를 정의하는지 확인합니다. 이 이벤트 리스너는 마커가
선택되며 맞춤 UIView
클래스의 인스턴스를
마커가 사용하는 맞춤 정보 창을 정의합니다.
아래 이미지는 기본 정보 창, 맞춤 콘텐츠가 포함된 정보 창, 맞춤 프레임과 배경이 포함된 정보 창을 보여 줍니다.
이 코드 샘플은 GitHub iOS용 Maps SDK와 함께 제공 맞춤 정보 창의 샘플을 포함합니다. 예를 들어 MarkerInfoWindowViewController.m (Objective-C) 또는 MarkerInfoWindowViewController.swift (Swift).
이러한 샘플을 다운로드하고 실행하는 방법은 코드 샘플을 참고하세요.