사용자가
Map에서 관심 장소 (POI)를 탭하면
iOS용 Maps 3D SDK (GoogleMaps3DKit)에서
해당 관심 장소의 장소 위젯을 표시합니다. `onTap(_:)`, `onPlaceTap(_:)`, `placeInformationEnabled(_:)`를 사용하여 탭 이벤트를 수신 대기하고 이 위젯의
표시 여부를 제어할 수 있습니다.
탭 이벤트 수신 대기
Map에서 탭 이벤트를 수신 대기하려면
onTap(_:)
수정자를 적용합니다.
사용자가 지도를 탭하면 클로저가
MapTapInfo
객체를 수신합니다.
location: 탭의 지리적 좌표와 고도를 나타내는LatLngAltitude입니다.content: 탭한 항목을 나타내는MapTapInfo.Content값입니다.MapTapInfo.Content.map: 탭이 기본 지도에 적중했습니다.MapTapInfo.Content.place(id:): 탭이 장소에 적중하여 고유 장소 ID (String)를 제공했습니다.
장소 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)
}
}