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:
location:LatLngAltitudeyang 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 suatu tempat, yang memberikan ID tempat uniknya (String).
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)
}
}