אינטראקציה עם נקודות עניין

תמונה של חלון קופץ קטן עם פרטי מקום בתחתית המסך, שמופיע אחרי לחיצה.

כשמשתמש לוחץ על נקודת עניין (POI) ב-Map, ערכת Maps 3D SDK ל-iOS‏ (GoogleMaps3DKit) מציגה ווידג'ט של מקומות לאותה נקודת עניין. אתם יכולים להאזין לאירועי הקשה ולשלוט בהצגת הווידג'ט הזה באמצעות onTap(_:),‏ onPlaceTap(_:) ו-placeInformationEnabled(_:).

האזנה לאירועי הקשה

כדי להאזין לאירועי הקשה ב-Map, צריך להחיל את המשתנה onTap(_:).

כשמשתמש מקיש על המפה, ה-closure מקבל אובייקט MapTapInfo שמכיל את המאפיינים הבאים:

שליטה בווידג'ט של ממשק המשתמש של Places

כדי לקבוע אם הווידג'ט המובנה של ממשק המשתמש של Places יוצג כשלוחצים על מקום, צריך להחיל את onPlaceTap(_:) על Map. ה-closure מקבל את ה-placeId (String) שנלחץ ומחזיר PlaceTapAction:

  • ‫Return .default: הצגת הווידג'ט המובנה של ממשק המשתמש של Places.
  • ‫Return .none: הסתרת הווידג'ט המובנה של ממשק המשתמש של Places.

בדוגמה הבאה, המערכת מאזינה לאירועי הקשה ומסתירה את הווידג'ט של ממשק המשתמש של 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)")
        }
      }
  }
}

כדי להשבית את כרטיס המידע המובנה של המקום לכל ההקשות על נקודות עניין ב-Map, מעבירים את false אל placeInformationEnabled(_:):

import GoogleMaps3DKit
import SwiftUI

struct ContentView: View {
  var body: some View {
    Map(mode: .hybrid)
      .placeInformationEnabled(false)
  }
}