Berinteraksi dengan lokasi menarik

Foto yang menampilkan popover kecil dengan detail tempat di bagian bawah layar yang dihasilkan dari ketukan.

Saat pengguna mengetuk lokasi menarik (POI) di Map, Maps 3D SDK for iOS (GoogleMaps3DKit) akan menampilkan widget Places untuk POI tersebut. Anda dapat memproses peristiwa ketuk dan mengontrol apakah widget ini ditampilkan menggunakan onTap(_:), onPlaceTap(_:), dan placeInformationEnabled(_:).

Memproses peristiwa ketuk

Untuk memproses peristiwa ketuk di Map, terapkan pengubah onTap(_:).

Saat pengguna mengetuk peta, penutupan akan menerima a MapTapInfo objek yang berisi properti berikut:

Mengontrol widget UI Places

Untuk mengontrol apakah widget UI Places bawaan ditampilkan saat tempat di ketuk, terapkan onPlaceTap(_:) ke Map. Penutupan menerima placeId (String) yang diketuk dan menampilkan PlaceTapAction:

  • Menampilkan .default: Menampilkan widget UI Places bawaan.
  • Menampilkan .none: Menyembunyikan widget UI Places bawaan.

Contoh berikut memproses peristiwa ketuk dan menyembunyikan widget UI Places default:

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

Untuk menonaktifkan kartu informasi tempat bawaan untuk semua ketukan POI di Map, teruskan false ke placeInformationEnabled(_:):

import GoogleMaps3DKit
import SwiftUI

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