관심 장소와 상호작용

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

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

탭 이벤트 수신 대기

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

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

장소 UI 위젯 제어

장소를 탭할 때 내장된 장소 UI 위젯이 표시되는지 여부를 제어하려면 onPlaceTap(_:)를 Map에 적용하세요. 클로저는 탭된 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)
  }
}