लोकप्रिय जगहों के साथ इंटरैक्ट करना

फ़ोटो में, स्क्रीन पर सबसे नीचे जगह की जानकारी वाला एक छोटा पॉपओवर दिख रहा है. यह पॉपओवर, स्क्रीन पर टैप करने से दिखता है.

जब कोई उपयोगकर्ता Map पर किसी लोकप्रिय जगह पर टैप करता है, तो iOS के लिए Maps 3D SDK (GoogleMaps3DKit) उस लोकप्रिय जगह के लिए जगहों की जानकारी देने वाला विजेट दिखाता है. टैप इवेंट को सुना जा सकता है. साथ ही, यह कंट्रोल किया जा सकता है कि यह विजेट onTap(_:), onPlaceTap(_:), और placeInformationEnabled(_:) का इस्तेमाल करके दिखे या नहीं.

टैप इवेंट को मॉनिटर करना

Map पर टैप इवेंट सुनने के लिए, onTap(_:) मॉडिफ़ायर लागू करें.

जब कोई उपयोगकर्ता मैप पर टैप करता है, तो क्लोज़र को एक MapTapInfo ऑब्जेक्ट मिलता है. इसमें ये प्रॉपर्टी शामिल होती हैं:

  • location: LatLngAltitude जो टैप के भौगोलिक निर्देशांक और ऊंचाई को दिखाता है.
  • content: MapTapInfo.Content की वैल्यू, जिससे पता चलता है कि किस पर टैप किया गया:
    • MapTapInfo.Content.map: टैप करने पर, बुनियादी मैप दिखता है.
    • MapTapInfo.Content.place(id:): टैप करने पर, किसी जगह की जानकारी मिलती है. साथ ही, उस जगह का यूनीक आईडी (String) भी मिलता है.

Places यूज़र इंटरफ़ेस (यूआई) विजेट को कंट्रोल करना

किसी जगह पर टैप करने पर, पहले से मौजूद Places यूज़र इंटरफ़ेस (यूआई) विजेट दिखे या नहीं, यह कंट्रोल करने के लिए, Map पर onPlaceTap(_:) लागू करें. क्लोज़र को टैप किया गया placeId (String) मिलता है और वह PlaceTapAction दिखाता है:

  • Return .default: इससे, पहले से मौजूद Places UI विजेट दिखता है.
  • 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)
  }
}