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

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

जब कोई उपयोगकर्ता 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) मिलता है.

जगहों की जानकारी देने वाले यूज़र इंटरफ़ेस विजेट को कंट्रोल करना

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

  • .default दिखाएं: जगहों की जानकारी देने वाला यूज़र इंटरफ़ेस विजेट दिखाता है.
  • दिखाएं .none: जगहों की जानकारी देने वाला यूज़र इंटरफ़ेस विजेट नहीं दिखाता है.

यहां दिए गए उदाहरण में, टैप करने के इवेंट सुने जाते हैं और जगहों की जानकारी देने वाले यूज़र इंटरफ़ेस विजेट को नहीं दिखाया जाता है:

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 पर सभी लोकप्रिय जगहों पर टैप करने के लिए, जगहों की जानकारी देने वाला कार्ड बंद करने के लिए, placeInformationEnabled(_:) को false पास करें:

import GoogleMaps3DKit
import SwiftUI

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