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 ketukan

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

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

Mengontrol widget UI Places

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

  • Return .default: Menampilkan widget UI Places bawaan.
  • Return .none: Menghilangkan 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)
  }
}