Quando um usuário toca em um ponto de interesse (PDI) em um
Map, o
SDK do Maps 3D para iOS (GoogleMaps3DKit) mostra um
widget do Places para
esse PDI. É possível detectar eventos de toque e controlar se esse widget é
mostrado usando
onTap(_:),
onPlaceTap(_:), e placeInformationEnabled(_:).
Detectar eventos de toque
Para detectar eventos de toque em um
Map, aplique
o
onTap(_:)
modificador.
Quando um usuário toca no mapa, o fechamento recebe um
MapTapInfo
objeto que contém as seguintes propriedades:
location: OLatLngAltitudeque representa as coordenadas geográficas e a altitude do toque.content: OMapTapInfo.Contentvalor que indica o que foi tocado:MapTapInfo.Content.map: o toque atingiu o mapa de base.MapTapInfo.Content.place(id:): o toque atingiu um lugar, fornecendo o ID de lugar exclusivo (String).
Controlar o widget da interface do Places
Para controlar se o widget integrado da interface do Places é mostrado quando um lugar é
tocado, aplique onPlaceTap(_:) a
Map. O fechamento recebe o placeId (String) tocado e retorna um PlaceTapAction:
- Retornar
.default: mostra o widget integrado da interface do Places. - Retornar
.none: suprime o widget integrado da interface do Places.
O exemplo a seguir detecta eventos de toque e suprime o widget padrão da interface do 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 desativar o card de informações do lugar integrado para todos os toques de PDI em um
Map, transmita
false para placeInformationEnabled(_:):
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}