관심 장소와 상호작용

탭한 결과로 화면 하단에 장소 세부정보가 포함된 작은 팝오버가 표시된 사진

사용자가 Map에서 관심 장소 (POI)를 탭하면 iOS용 Maps 3D SDK (GoogleMaps3DKit)가 해당 관심 장소의 장소 위젯을 표시합니다. onTap(_:), onPlaceTap(_:), placeInformationEnabled(_:)를 사용하여 탭 이벤트를 수신 대기하고 이 위젯의 표시 여부를 제어할 수 있습니다.

탭 이벤트 수신 대기

Map에서 탭 이벤트를 수신 대기하려면 onTap(_:) 수정자를 적용합니다.

사용자가 지도를 탭하면 클로저가 다음 속성을 포함하는 MapTapInfo 객체를 수신합니다.

장소 UI 위젯 제어

장소를 탭할 때 내장된 장소 UI 위젯이 표시되는지 여부를 제어하려면 Map에 onPlaceTap(_:)를 적용하세요. 클로저는 탭된 placeId (String)를 수신하고 PlaceTapAction를 반환합니다.

  • Return .default: 기본 제공 장소 UI 위젯을 표시합니다.
  • Return .none: 기본 제공 장소 UI 위젯을 표시하지 않습니다.

다음 예에서는 탭 이벤트를 수신 대기하고 기본 장소 UI 위젯을 표시하지 않습니다.

import GoogleMaps3DKit
import SwiftUI

struct ContentView: View {
  @State private var camera = Camera(center: .init(latitude: 37.7749, longitude: -122.4194))

  var body: some View {
    Map(camera: $camera, mode: .hybrid)
      .onPlaceTap { placeId in
        // Suppress the built-in Places UI widget
        .none
      }
      .onTap { tapInfo in
        switch tapInfo.content {
        case .map:
          print("Tapped map at \(tapInfo.location)")
        case .place(let placeId):
          print("Tapped place \(placeId) at \(tapInfo.location)")
        }
      }
  }
}

Map에서 모든 관심 장소 탭에 대해 내장된 장소 정보 카드를 사용 중지하려면 false를 placeInformationEnabled(_:)에 전달합니다.

import GoogleMaps3DKit
import SwiftUI

struct ContentView: View {
  var body: some View {
    Map(mode: .hybrid)
      .placeInformationEnabled(false)
  }
}