Önemli yerlerle etkileşim kurma

Dokunma işlemi sonucunda ekranın alt kısmında yer ayrıntılarını içeren küçük bir popover gösteren fotoğraf.

Kullanıcı, Map üzerinde bir önemli yere (ÖY) dokunduğunda iOS için Haritalar 3D SDK'sı (GoogleMaps3DKit), bu ÖY için bir Konum widget'ı gösterir. onTap(_:), onPlaceTap(_:) ve placeInformationEnabled(_:) kullanarak dokunma etkinliklerini dinleyebilir ve bu widget'ın gösterilip gösterilmeyeceğini kontrol edebilirsiniz.

Dokunma etkinliklerini dinleme

Map öğesindeki dokunma etkinliklerini dinlemek için onTap(_:) değiştiricisini uygulayın.

Kullanıcı haritaya dokunduğunda kapanış, aşağıdaki özellikleri içeren bir MapTapInfo nesnesi alır:

Places kullanıcı arayüzü widget'ını kontrol etme

Bir yere dokunulduğunda yerleşik Places kullanıcı arayüzü widget'ının gösterilip gösterilmeyeceğini kontrol etmek için Map öğesine onPlaceTap(_:) uygulayın. Kapatma, dokunulan placeId (String) değerini alır ve bir PlaceTapAction döndürür:

  • Return .default: Yerleşik Places kullanıcı arayüzü widget'ını gösterir.
  • Return .none: Yerleşik Places UI widget'ını gizler.

Aşağıdaki örnekte, dokunma etkinlikleri dinlenir ve varsayılan Yerler kullanıcı arayüzü widget'ı engellenir:

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

Map üzerinde tüm ÖY dokunmaları için yerleşik yer bilgisi kartını devre dışı bırakmak istiyorsanız placeInformationEnabled(_:) öğesine false değerini iletin:

import GoogleMaps3DKit
import SwiftUI

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