Interactúa con lugares de interés

Foto que muestra un pequeño cuadro emergente con detalles del lugar en la parte inferior de la pantalla, que aparece cuando se presiona un lugar.

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:

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)
  }
}