تعامل با نقاط موردعلاقه

عکسی که پنجره بالاپر کوچکی را با جزئیات مکان در پایین صفحه نشان می‌دهد که درنتیجه تک‌ضرب زدن ظاهر شده است.

وقتی کاربر روی نقطه موردعلاقه (POI) در Map تک‌ضرب می‌زند، کیت توسعه نرم‌افزار Maps 3D ویژه iOS‏ (GoogleMaps3DKit) ابزاره «مکان‌ها» را برای آن نقطه موردعلاقه نمایش می‌دهد. می‌توانید به رویدادهای تک‌ضرب گوش دهید و بااستفاده از onTap(_:)، onPlaceTap(_:)، و placeInformationEnabled(_:) کنترل کنید که این ابزاره نمایش داده شود یا نه.

گوش دادن به رویدادهای تک‌ضرب زدن

برای گوش دادن به رویدادهای تک‌ضرب در Map، اصلاح‌کننده onTap(_:) را اعمال کنید.

وقتی کاربر روی نقشه ضربه می‌زند، closure یک MapTapInfo شیء حاوی ویژگی‌های زیر دریافت می‌کند:

کنترل ابزاره میانای کاربر «مکان‌ها»

برای کنترل اینکه آیا ابزاره توکار 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)
  }
}