Quando un utente tocca un punto di interesse (PDI) su una
Map, il
Maps 3D SDK per iOS (GoogleMaps3DKit) visualizza un
widget Places per
quel PDI. Puoi ascoltare gli eventi di tocco e controllare se questo widget viene
visualizzato utilizzando
onTap(_:),
onPlaceTap(_:), e placeInformationEnabled(_:).
Ascolta gli eventi di tocco
Per ascoltare gli eventi di tocco su un
Map, applica
il
onTap(_:)
modificatore.
Quando un utente tocca la mappa, la chiusura riceve un
MapTapInfo
oggetto contenente le seguenti proprietà:
location: TheLatLngAltitudeche rappresenta le coordinate geografiche e l'altitudine del tocco.content: IlMapTapInfo.Contentvalore che indica cosa è stato toccato:MapTapInfo.Content.map: il tocco ha colpito la mappa base.MapTapInfo.Content.place(id:): il tocco ha colpito un luogo, fornendo il suo ID luogo univoco (String).
Controlla il widget dell'interfaccia utente di Places
Per controllare se il widget dell'interfaccia utente di Places integrato viene visualizzato quando viene toccato un luogo, applica onPlaceTap(_:) a
Map. La chiusura riceve l'placeId (String) toccato e restituisce un PlaceTapAction:
- Restituisci
.default: mostra il widget dell'interfaccia utente di Places integrato. - Restituisci
.none: elimina il widget dell'interfaccia utente di Places integrato.
L'esempio seguente ascolta gli eventi di tocco ed elimina il widget dell'interfaccia utente di Places predefinito:
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)")
}
}
}
}
Per disattivare la scheda informativa sul luogo integrata per tutti i tocchi dei PDI su un
Map, passa
false a placeInformationEnabled(_:):
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}