عندما ينقر المستخدم على نقطة اهتمام (POI) على
Map،
تعرض حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" الثلاثية الأبعاد لأجهزة iOS (GoogleMaps3DKit)
أداة تحديد الأماكن
لنقطة الاهتمام هذه. يمكنك الاستماع إلى أحداث النقر والتحكّم في ما إذا كان سيتم عرض هذا التطبيق المصغّر باستخدام onTap(_:) وonPlaceTap(_:) وplaceInformationEnabled(_:).
الاستماع إلى أحداث النقر
للاستماع إلى أحداث النقر على
Map، طبِّق
المعدِّل
onTap(_:).
عندما ينقر المستخدم على الخريطة، يتلقّى الإغلاق عنصر
MapTapInfo
يحتوي على السمات التالية:
-
location: تمثّل السمةLatLngAltitudeالإحداثيات الجغرافية والارتفاع للنقرة. content: قيمةMapTapInfo.Contentالتي تشير إلى ما تم النقر عليه:MapTapInfo.Content.map: تم النقر على الخريطة الأساسية.MapTapInfo.Content.place(id:): تم النقر على مكان، ما يوفّر رقم تعريف المكان الفريد (String).
التحكّم في التطبيق المصغّر لواجهة مستخدم Places
للتحكّم في ما إذا كان سيتم عرض التطبيق المصغّر المضمّن لواجهة مستخدم "الأماكن" عند النقر على مكان، يمكنك تطبيق onPlaceTap(_:) على Map. يتلقّى الإغلاق placeId (String) الذي تم النقر عليه ويعرض PlaceTapAction:
- زرّ Return
.default: يعرض التطبيق المصغّر المضمّن لواجهة مستخدم "الأماكن". - Return
.none: لإيقاف التطبيق المصغّر المضمّن لواجهة مستخدم "الأماكن".
يستمع المثال التالي إلى أحداث النقر ويمنع ظهور التطبيق المصغّر التلقائي لواجهة مستخدم "الأماكن":
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)")
}
}
}
}
لإيقاف بطاقة معلومات المكان المضمّنة لجميع النقرات على نقاط الاهتمام على
Map، مرِّر
false إلى placeInformationEnabled(_:):
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}