जानकारी विंडो की मदद से, किसी मार्कर पर टैप किए जाने पर उपयोगकर्ता को वह जानकारी दिखती है.
जानकारी विंडो को डिवाइस की स्क्रीन के अनुसार बनाया जाता है, जो उससे जुड़े मार्कर के ऊपर होती है. डिफ़ॉल्ट जानकारी विंडो में शीर्षक बोल्ड में होता है, जिसमें शीर्षक के नीचे स्निपेट टेक्स्ट होता है.
जानकारी विंडो की सामग्री मार्कर की title
और snippet
प्रॉपर्टी से तय की जाती है. अगर title
और snippet
, दोनों प्रॉपर्टी खाली या nil
हैं, तो मार्कर पर क्लिक करने से जानकारी विंडो नहीं दिखती.
एक बार में केवल एक जानकारी विंडो दिखाई जाती है. यदि कोई उपयोगकर्ता किसी अन्य मार्कर पर टैप करता है, तो वर्तमान विंडो छिप जाती है और नई जानकारी विंडो खुल जाती है. अगर उपयोगकर्ता किसी ऐसे मार्कर पर क्लिक करता है जो अभी जानकारी विंडो दिखा रहा है, तो वह जानकारी विंडो बंद हो जाती है और फिर से खुलती है.
अतिरिक्त टेक्स्ट या इमेज जोड़ने के लिए, पसंद के मुताबिक जानकारी विंडो बनाएं. कस्टम जानकारी विंडो की मदद से, आपको पॉप-अप के दिखने का पूरा कंट्रोल मिलता है.
जानकारी वाली विंडो जोड़ें
यह स्निपेट एक आसान मार्कर बनाता है, जिसमें जानकारी विंडो के टेक्स्ट के लिए सिर्फ़ एक शीर्षक होता है.
Swift
let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: position) london.title = "London" london.map = mapView
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:position]; london.title = @"London"; london.map = mapView;
snippet
प्रॉपर्टी की मदद से, ऐसा अतिरिक्त टेक्स्ट जोड़ा जा सकता है जो टाइटल के नीचे छोटे फ़ॉन्ट में दिखेगा. ऐसी स्ट्रिंग जो जानकारी विंडो की चौड़ाई से ज़्यादा लंबी होती हैं, वे अपने-आप कई लाइनों में रैप हो जाती हैं. बहुत लंबे
मैसेज में काट-छांट की जा सकती है.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView;
जानकारी विंडो दिखाएं/छिपाएं
जानकारी विंडो, मार्कर पर उपयोगकर्ता के टच इवेंट का जवाब देने के लिए डिज़ाइन की गई हैं.
GMSMapView
की selectedMarker
प्रॉपर्टी सेट करके, जानकारी विंडो को प्रोग्राम के हिसाब से दिखाया या छिपाया जा सकता है:
- मार्कर दिखाने के लिए,
selectedMarker
को उसके नाम पर सेट करें. - इसे छिपाने के लिए,
selectedMarker
कोnil
पर सेट करें.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView // Show marker mapView.selectedMarker = london // Hide marker mapView.selectedMarker = nil
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView; // Show marker mapView.selectedMarker = london; // Hide marker mapView.selectedMarker = nil;
जानकारी विंडो को अपने-आप रीफ़्रेश होने के लिए सेट करना
अगर आपको नई प्रॉपर्टी या जानकारी विंडो का कॉन्टेंट बदलना है, तो मार्कर पर tracksInfoWindowChanges
को YES
या true
पर सेट करें. आपको जानकारी विंडो के छिपने और उसे फिर से दिखाने का इंतज़ार नहीं करना पड़ेगा. डिफ़ॉल्ट वैल्यू, NO
या false
है.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
tracksInfoWindowChanges
प्रॉपर्टी को कब सेट करना है, यह तय करने के लिए आपको परफ़ॉर्मेंस से जुड़ी ज़रूरी बातों को ध्यान में रखना चाहिए. साथ ही, जानकारी विंडो को अपने-आप फिर से ड्रॉ करने से होने वाले फ़ायदों को भी ध्यान में रखना चाहिए. उदाहरण के लिए:
- अगर आपको कई बदलाव करने हैं, तो प्रॉपर्टी को
YES
में और फिर वापसNO
में बदलें. - जब कोई ऐनिमेशन चल रहा हो या कॉन्टेंट एसिंक्रोनस रूप से लोड हो रहा हो,
तो आपको प्रॉपर्टी को तब तक
YES
पर सेट रखना चाहिए, जब तक कार्रवाइयां पूरी नहीं हो जातीं.
मार्कर की iconView
प्रॉपर्टी का इस्तेमाल करते समय विचार करने के लिए नोट भी देखें.
जानकारी विंडो की स्थिति बदलना
जानकारी विंडो को डिवाइस की स्क्रीन के अनुसार, उससे जुड़े मार्कर के ऊपर
तैयार किया जाता है. infoWindowAnchor
प्रॉपर्टी सेट करके, मार्कर के हिसाब से जानकारी विंडो की जगह बदली जा सकती है. यह प्रॉपर्टी एक CGPoint
को स्वीकार करती है, जिसे (x,y) ऑफ़सेट के तौर पर परिभाषित किया गया है, जिसमें x और y, दोनों की रेंज 0.0 और 1.0 के बीच है. डिफ़ॉल्ट ऑफ़सेट (0.5, 0.0) है, जो बीच में
सबसे ऊपर है. infoWindowAnchor
ऑफ़सेट को सेट करने से, जानकारी विंडो को कस्टम आइकॉन से अलाइन करने में मदद मिलती है.
Swift
london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5) london.icon = UIImage(named: "house") london.map = mapView
Objective-C
london.infoWindowAnchor = CGPointMake(0.5, 0.5); london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
जानकारी विंडो पर इवेंट मैनेज करना
इन जानकारी विंडो इवेंट को सुना जा सकता है:
mapView:markerInfoWindow:
— इसे तब कॉल किया जाता है, जब कोई मार्कर चुना जाने वाला होता है. मार्कर के लिए इस्तेमाल करने के लिए, वैकल्पिक तौर परUIView
के तौर पर कस्टम जानकारी विंडो दिखा सकता है. ज़्यादा जानकारी के लिए, नीचे कस्टम जानकारी विंडो देखें.mapView:markerInfoContents:
— इसे तब कॉल किया जाता है, जबmapView:markerInfoWindow
कोई वैल्यू नहीं दिखाता है.mapView:didCloseInfoWindowOfMarker:
— इसे तब कॉल किया जाता है, जब मार्कर की जानकारी विंडो बंद होती है.mapView:didLongPressInfoWindowOfMarker:
— मार्कर की जानकारी वाली विंडो को दबाकर रखने के बाद यह कॉल किया जाता है.
इवेंट सुनने के लिए, आपको
GMSMapViewDelegate
प्रोटोकॉल लागू करना होगा. इवेंट से जुड़ी गाइड और GMSMapViewDelegate
पर तरीकों की सूची देखें.
GitHub में ऐसे सैंपल शामिल हैं जो जानकारी विंडो इवेंट को मैनेज करने का तरीका बताते हैं:
कस्टम जानकारी विंडो
कस्टम जानकारी विंडो के लेआउट के बारे में बताने वाली UIView
की सब-क्लास बनाकर, जानकारी विंडो के कॉन्टेंट को पसंद के मुताबिक बनाएं. उस सब-क्लास में, व्यू को अपनी पसंद के मुताबिक तय करें. उदाहरण के लिए, टाइटल और स्निपेट टेक्स्ट और अन्य व्यू दिखाने के लिए कस्टम
UILabel
इंस्टेंस का इस्तेमाल किया जा सकता है, जैसे कि
UIImageView
इमेज की विंडो में दिखाए गए इंस्टेंस.
पक्का करें कि आपका ViewController
, GMSIndoorDisplayDelegate
प्रोटोकॉल लागू करता है और mapView:markerInfoWindow: इवेंट के लिए लिसनर तय करता है. इस इवेंट लिसनर को तब कॉल किया जाता है, जब कोई मार्कर चुना जाने वाला होता है. इसकी मदद से, आपको अपनी पसंद के मुताबिक UIView
क्लास का इंस्टेंस लौटाने की सुविधा मिलती है, ताकि मार्कर से पसंद के मुताबिक जानकारी वाली विंडो तय की जा सके.
नीचे दी गई इमेज में एक डिफ़ॉल्ट जानकारी विंडो, पसंद के मुताबिक कॉन्टेंट वाली एक जानकारी विंडो, और पसंद के मुताबिक बनाए गए फ़्रेम और बैकग्राउंड वाली एक जानकारी विंडो दिखती है.
![जानकारी विंडो की तुलना. जानकारी विंडो की तुलना](https://google-developers.gonglchuangl.net/static/maps/documentation/images/marker-infowindows.png?authuser=0&hl=hi)
iOS के लिए Maps SDK टूल के साथ दिए गए GitHub पर दिए गए कोड सैंपल में, कस्टम जानकारी विंडो के सैंपल शामिल हैं. उदाहरण के लिए, MarkerInfoWindowViewController.m (Objective-C) या MarkerInfoWindowViewController.swift (Swift) की परिभाषा देखें.
इन सैंपल को डाउनलोड करने और चलाने के बारे में जानकारी पाने के लिए, कोड सैंपल देखें.