관심 장소와 상호작용

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

사용자가 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`에서 모든 관심 장소 탭에 대해 기본 제공 장소 정보 카드를 사용 중지하려면 `placeInformationEnabled(_:)`에 ` false`를 전달합니다.

import GoogleMaps3DKit
import SwiftUI

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