وقتی کاربر روی نقطه موردعلاقه (POI) در
Map تکضرب میزند،
کیت توسعه نرمافزار Maps 3D ویژه iOS (GoogleMaps3DKit)
ابزاره «مکانها» را برای
آن نقطه موردعلاقه نمایش میدهد. میتوانید به رویدادهای تکضرب گوش دهید و بااستفاده از
onTap(_:)،
onPlaceTap(_:)، و placeInformationEnabled(_:) کنترل کنید که این ابزاره نمایش داده شود یا نه.
گوش دادن به رویدادهای تکضرب زدن
برای گوش دادن به رویدادهای تکضرب در
Map،
اصلاحکننده
onTap(_:)
را اعمال کنید.
وقتی کاربر روی نقشه تکضرب میزند، بسته شدن یک شیء
MapTapInfo
دریافت میکند که حاوی ویژگیهای زیر است:
location:LatLngAltitudeکه مختصات جغرافیایی و ارتفاع ضربه را نشان میدهد.content: مقدارMapTapInfo.Contentکه نشان میدهد روی چه چیزی تکضرب زده شده است:MapTapInfo.Content.map: ضربه به نقشه مبنا برخورد کرد.MapTapInfo.Content.place(id:): ضربه به مکانی برخورد کرد و شناسه مکان منحصربهفرد آن (String) را ارائه داد.
کنترل کردن ابزاره میانای کاربر «مکانها»
برای کنترل اینکه آیا ابزاره میانای کاربر «مکانهای» داخلی هنگام تکضرب زدن روی مکان نمایش داده شود یا نه،
onPlaceTap(_:) را در
Map اعمال کنید. The
closure receives the tapped placeId (String) and returns a PlaceTapAction:
- Return
.default: ابزاره داخلی واسط کاربر «مکانها» را نشان میدهد. - Return
.none: ابزاره واسط کاربر داخلی Places را سرکوب میکند.
مثال زیر رویدادهای تکضرب را گوش میدهد و ابزاره UI پیشفرض «مکانها» را سرکوب میکند:
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)
}
}