जब कोई उपयोगकर्ता
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)
}
}