Interakcja z ciekawymi miejscami

Zdjęcie przedstawiające małe wyskakujące okienko z informacjami o miejscu u dołu ekranu, które pojawia się po kliknięciu.

Gdy użytkownik naciśnie ciekawe miejsce na Map, pakiet Maps 3D SDK na iOS (GoogleMaps3DKit) wyświetli widżet Miejsc dla tego miejsca. Możesz nasłuchiwać zdarzeń naciśnięcia i określać, czy ten widżet ma być wyświetlany, za pomocą onTap(_:), onPlaceTap(_:), i placeInformationEnabled(_:).

Nasłuchiwanie zdarzeń naciśnięcia

Aby nasłuchiwać zdarzeń naciśnięcia na Map, zastosuj modifikator onTap(_:).

Gdy użytkownik naciśnie mapę, domknięcie otrzyma MapTapInfo obiekt zawierający te właściwości:

Sterowanie widżetem interfejsu Miejsc

Aby określić, czy wbudowany widżet interfejsu Miejsc ma być wyświetlany po naciśnięciu miejsca, zastosuj onPlaceTap(_:) do Map. Domknięcie otrzyma naciśnięty placeId (String) i zwróci PlaceTapAction:

  • Zwróć .default: wyświetla wbudowany widżet interfejsu Miejsc.
  • Zwróć .none: ukrywa wbudowany widżet interfejsu Miejsc.

Ten przykład nasłuchuje zdarzeń naciśnięcia i ukrywa domyślny widżet interfejsu Miejsc:

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

Aby wyłączyć wbudowaną kartę informacji o miejscu dla wszystkich naciśnięć ciekawych miejsc na Map, przekaż false do placeInformationEnabled(_:):

import GoogleMaps3DKit
import SwiftUI

struct ContentView: View {
  var body: some View {
    Map(mode: .hybrid)
      .placeInformationEnabled(false)
  }
}