Interagir avec les points d'intérêt

Photo montrant une petite fenêtre pop-over avec les détails d'un lieu en bas de l'écran, qui s'affiche après avoir appuyé sur l'écran.

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 :

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