Önemli yerlerle etkileşim kurma

Dokunma 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. Dokunma etkinliklerini dinleyebilir ve onTap(_:), onPlaceTap(_:) ve placeInformationEnabled(_:) kullanarak bu widget'ın gösterilip gösterilmeyeceğini kontrol edebilirsiniz.

Dokunma etkinliklerini dinleme

Bir 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 Yerler 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) öğesini 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 Places kullanıcı arayüzü widget'ı gizlenir:

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 üzerindeki tüm ÖY dokunmaları için yerleşik yer bilgi kartını devre dışı bırakmak istiyorsanız false değerini placeInformationEnabled(_:) yöntemine iletin:

import GoogleMaps3DKit
import SwiftUI

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