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 kliknie ciekawe miejsce na Map, pakiet SDK Map 3D na iOS (GoogleMaps3DKit) wyświetli widżet Miejsc dla tego miejsca. Możesz nasłuchiwać zdarzeń kliknięcia i kontrolować, czy ten widżet jest wyświetlany, za pomocą onTap(_:), onPlaceTap(_:) i placeInformationEnabled(_:).

Nasłuchiwanie zdarzeń kliknięcia

Aby nasłuchiwać zdarzeń kliknięcia elementu Map, zastosuj modyfikator onTap(_:).

Gdy użytkownik kliknie mapę, zamknięcie otrzymuje obiekt MapTapInfo zawierający te właściwości:

Sterowanie widżetem interfejsu Miejsc

Aby określić, czy po kliknięciu miejsca ma się wyświetlać wbudowany widżet interfejsu Miejsc, zastosuj onPlaceTap(_:) do Map. Zamknięcie otrzymuje kliknięty element placeId (String) i zwraca PlaceTapAction:

  • Return .default: wyświetla wbudowany widżet interfejsu Places UI.
  • Return .none: pomija wbudowany widżet interfejsu Miejsc.

W tym przykładzie nasłuchiwane są zdarzenia kliknięcia i pomijany jest 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ę informacyjną miejsca dla wszystkich kliknięć ciekawych miejsc na mapie Map, przekaż false do placeInformationEnabled(_:):

import GoogleMaps3DKit
import SwiftUI

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