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