Cuando un usuario presiona un lugar de interés (POI) en un
Map, el
SDK de Maps 3D para iOS (GoogleMaps3DKit) muestra un
widget de Places para
ese POI. Puedes escuchar eventos de presión y controlar si se muestra este widget con
onTap(_:),
onPlaceTap(_:) y placeInformationEnabled(_:).
Escucha eventos de presión
Para escuchar eventos de presión en un
Map, aplica
el
onTap(_:)
modificador.
Cuando un usuario presiona el mapa, el cierre recibe un
MapTapInfo
objeto que contiene las siguientes propiedades:
location: ElLatLngAltitudeque representa las coordenadas geográficas y la altitud de la presión.content: ElMapTapInfo.Contentvalor que indica lo que se presionó:MapTapInfo.Content.map: La presión llegó al mapa base.MapTapInfo.Content.place(id:): La presión llegó a un lugar y proporciona su ID de lugar único (String).
Controla el widget de la IU de Places
Para controlar si se muestra el widget integrado de la IU de Places cuando se presiona un lugar, aplica onPlaceTap(_:) a
Map. El cierre recibe el placeId presionado (String) y muestra un PlaceTapAction:
- Retorno
.default: Muestra el widget integrado de la IU de Places. - Retorno
.none: Suprime el widget integrado de la IU de Places.
En el siguiente ejemplo, se escuchan eventos de presión y se suprime el widget predeterminado de la IU de Places:
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)")
}
}
}
}
Para inhabilitar la tarjeta de información del lugar integrada para todas las presiones de POI en un
Map, pasa
false a placeInformationEnabled(_:):
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}