เมื่อผู้ใช้แตะจุดสนใจ (POI) บน
Map นั้น
Maps 3D SDK สำหรับ iOS (GoogleMaps3DKit) จะแสดง
วิดเจ็ตสถานที่สำหรับ
POI นั้น คุณสามารถรอรับเหตุการณ์การแตะและควบคุมว่าจะแสดงวิดเจ็ตนี้หรือไม่
โดยใช้
onTap(_:),
onPlaceTap(_:), และ placeInformationEnabled(_:)
รอรับเหตุการณ์การแตะ
หากต้องการรอรับเหตุการณ์การแตะบน
Map ให้ใช้
ตัวแก้ไข
onTap(_:)
เมื่อผู้ใช้แตะแผนที่ ปิดจะได้รับa
MapTapInfo
ออบเจ็กต์ที่มีพร็อพเพอร์ตี้ต่อไปนี้
location: TheLatLngAltitudeที่แสดงพิกัดทางภูมิศาสตร์และความสูงของการแตะcontent: ค่าMapTapInfo.Contentที่ระบุสิ่งที่ถูกแตะ:MapTapInfo.Content.map: การแตะโดนแผนที่ฐานMapTapInfo.Content.place(id:): การแตะโดนสถานที่ โดยระบุรหัสสถานที่ที่ไม่ซ้ำกัน (String)
ควบคุมวิดเจ็ต UI Places
หากต้องการควบคุมว่าจะแสดงวิดเจ็ต UI สถานที่ในตัวหรือไม่เมื่อมีการแตะสถานที่ ให้ใช้ onPlaceTap(_:) กับ
Map ปิดจะได้รับ placeId (String) ที่แตะและแสดงผล PlaceTapAction ดังนี้
- แสดงผล
.default: แสดงวิดเจ็ต UI สถานที่ในตัว - Return
.none: ไม่แสดงวิดเจ็ต UI Places ในตัว
ตัวอย่างต่อไปนี้จะรอกิจกรรมสำหรับการแตะและไม่แสดงวิดเจ็ต UI Places เริ่มต้น
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)")
}
}
}
}
หากต้องการปิดใช้การ์ดข้อมูลสถานที่ในตัวสำหรับการแตะ POI ทั้งหมดบน
Map ให้ส่ง
false ไปยัง placeInformationEnabled(_:)
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}