Lorsqu'un utilisateur appuie sur un point d'intérêt sur une
Map, le
SDK Maps 3D pour iOS (GoogleMaps3DKit) affiche un
widget Places pour
ce point d'intérêt. Vous pouvez écouter les événements d'appui et contrôler si ce widget s'affiche à l'aide de
onTap(_:),
onPlaceTap(_:), et placeInformationEnabled(_:).
Écouter les événements d'appui
Pour écouter les événements d'appui sur un
Map, appliquez
le
onTap(_:)
modificateur.
Lorsqu'un utilisateur appuie sur la carte, la fermeture reçoit un
MapTapInfo
objet contenant les propriétés suivantes :
location: TheLatLngAltitudereprésentant les coordonnées géographiques et l'altitude de l'appui.content: valeurMapTapInfo.Contentindiquant sur quoi l'utilisateur a appuyé :MapTapInfo.Content.map: l'appui a touché la carte de base.MapTapInfo.Content.place(id:): l'appui a touché un lieu, fournissant son ID de lieu unique (String).
Contrôler le widget d'interface utilisateur Places
Pour contrôler si le widget d'interface utilisateur Places intégré s'affiche lorsqu'un lieu est
appuyé, appliquez onPlaceTap(_:) à
Map. La fermeture reçoit le placeId (String) appuyé et renvoie une PlaceTapAction :
- Return
.default: affiche le widget d'interface utilisateur Places intégré. - Retour
.none: supprime le widget d'interface utilisateur Places intégré.
L'exemple suivant écoute les événements d'appui et supprime le widget d'interface utilisateur Places par défaut :
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)")
}
}
}
}
Pour désactiver la fiche d'informations sur le lieu intégrée pour tous les appuis sur les points d'intérêt d'une
Map, transmettez
false à placeInformationEnabled(_:) :
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}