Wenn ein Nutzer auf einer
Map auf einen POI tippt, zeigt das
Maps 3D SDK for iOS (GoogleMaps3DKit) ein
Places-Widget für
diesen POI an. Sie können auf Tippereignisse warten und mit
festlegen, ob dieses Widget
angezeigt wirdonTap(_:),
onPlaceTap(_:), und placeInformationEnabled(_:).
Auf Tippereignisse warten
Wenn Sie auf Tippereignisse auf einer
Map warten möchten, wenden Sie den
onTap(_:)
Modifikator an.
Wenn ein Nutzer auf die Karte tippt, empfängt die Closure ein
MapTapInfo
Objekt mit den folgenden Eigenschaften:
location: DasLatLngAltitude, das die geografischen Koordinaten und die Höhe des Tippens darstellt.content: DerMapTapInfo.ContentWert, der angibt, worauf getippt wurde:MapTapInfo.Content.map: Das Tippen erfolgte auf der Basiskarte.MapTapInfo.Content.place(id:): Das Tippen erfolgte auf einen Ort. Die eindeutige Orts-ID (String) wird angegeben.
Places UI-Widget steuern
Wenn Sie festlegen möchten, ob das integrierte Places UI-Widget angezeigt wird, wenn auf einen Ort getippt wird, wenden Sie onPlaceTap(_:) auf
Map an. Die Closure empfängt die getippte placeId (String) und gibt eine PlaceTapAction zurück:
.defaultzurückgeben: Das integrierte Places UI-Widget wird angezeigt..nonezurückgeben: Das integrierte Places UI-Widget wird unterdrückt.
Im folgenden Beispiel wird auf Tippereignisse gewartet und das Standard-Places UI-Widget unterdrückt:
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)")
}
}
}
}
Wenn Sie die integrierte Ortsinformationskarte für alle POI-Tipps auf einer
Map deaktivieren möchten, übergeben Sie
false an placeInformationEnabled(_:):
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}