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:
location: TheLatLngAltitudeyang mewakili koordinat geografis dan ketinggian ketukan.content: NilaiMapTapInfo.Contentyang menunjukkan apa yang diketuk:MapTapInfo.Content.map: Ketukan mengenai peta dasar.MapTapInfo.Content.place(id:): Ketukan mengenai tempat, yang memberikan ID tempat uniknya (String).
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)
}
}