Gdy użytkownik naciśnie ciekawe miejsce na
Map, pakiet
Maps 3D SDK na iOS (GoogleMaps3DKit) wyświetli
widżet Miejsc dla
tego miejsca. Możesz nasłuchiwać zdarzeń naciśnięcia i określać, czy ten widżet ma być
wyświetlany, za pomocą
onTap(_:),
onPlaceTap(_:), i placeInformationEnabled(_:).
Nasłuchiwanie zdarzeń naciśnięcia
Aby nasłuchiwać zdarzeń naciśnięcia na
Map, zastosuj
modifikator
onTap(_:).
Gdy użytkownik naciśnie mapę, domknięcie otrzyma
MapTapInfo
obiekt zawierający te właściwości:
location: TheLatLngAltitudereprezentujący współrzędne geograficzne i wysokość naciśnięcia.content: WartośćMapTapInfo.Contentwskazująca, co zostało naciśnięte:MapTapInfo.Content.map: naciśnięcie trafiło w mapę podstawową.MapTapInfo.Content.place(id:): naciśnięcie trafiło w miejsce, podając jego unikalny identyfikator miejsca (String).
Sterowanie widżetem interfejsu Miejsc
Aby określić, czy wbudowany widżet interfejsu Miejsc ma być wyświetlany po naciśnięciu miejsca, zastosuj onPlaceTap(_:) do
Map. Domknięcie otrzyma naciśnięty placeId (String) i zwróci PlaceTapAction:
- Zwróć
.default: wyświetla wbudowany widżet interfejsu Miejsc. - Zwróć
.none: ukrywa wbudowany widżet interfejsu Miejsc.
Ten przykład nasłuchuje zdarzeń naciśnięcia i ukrywa 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ę informacji o miejscu dla wszystkich naciśnięć ciekawych miejsc na
Map, przekaż
false do placeInformationEnabled(_:):
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}