Gdy użytkownik kliknie ciekawe miejsce na Map, pakiet SDK Map 3D na iOS (GoogleMaps3DKit) wyświetli widżet Miejsc dla tego miejsca. Możesz nasłuchiwać zdarzeń kliknięcia i kontrolować, czy ten widżet jest wyświetlany, za pomocą onTap(_:), onPlaceTap(_:) i placeInformationEnabled(_:).
Nasłuchiwanie zdarzeń kliknięcia
Aby nasłuchiwać zdarzeń kliknięcia elementu Map, zastosuj modyfikator onTap(_:).
Gdy użytkownik kliknie mapę, zamknięcie otrzymuje obiekt MapTapInfo zawierający te właściwości:
location:LatLngAltitudereprezentujący współrzędne geograficzne i wysokość kliknięcia.content: wartośćMapTapInfo.Contentwskazująca, co zostało kliknięte:MapTapInfo.Content.map: kliknięcie trafiło w mapę podstawową.MapTapInfo.Content.place(id:): kliknięcie trafiło w miejsce, podając jego unikalny identyfikator miejsca (String).
Sterowanie widżetem interfejsu Miejsc
Aby określić, czy po kliknięciu miejsca ma się wyświetlać wbudowany widżet interfejsu Miejsc, zastosuj onPlaceTap(_:) do Map. Zamknięcie otrzymuje kliknięty element placeId (String) i zwraca PlaceTapAction:
- Return
.default: wyświetla wbudowany widżet interfejsu Places UI. - Return
.none: pomija wbudowany widżet interfejsu Miejsc.
W tym przykładzie nasłuchiwane są zdarzenia kliknięcia i pomijany jest domyślny widżet interfejsu Miejsc:
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)")
}
}
}
}
Aby wyłączyć wbudowaną kartę informacyjną miejsca dla wszystkich kliknięć ciekawych miejsc na mapie Map, przekaż false do placeInformationEnabled(_:):
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}