
जानकारी वाले विंडो की मदद से, उपयोगकर्ता को मार्कर पर टैप करने पर जानकारी दिखाई जा सकती है.
जानकारी वाली विंडो, डिवाइस की स्क्रीन के हिसाब से ओरिएंट की जाती है. यह विंडो, उससे जुड़े मार्कर के ऊपर, बीच में दिखती है. डिफ़ॉल्ट जानकारी वाली विंडो में, टाइटल बोल्ड होता है और टाइटल के नीचे स्निपेट टेक्स्ट होता है.
जानकारी वाले विंडो का कॉन्टेंट, मार्कर की 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 क्लास का एक इंस्टेंस दिखाया जा सकता है.
नीचे दी गई इमेज में, डिफ़ॉल्ट जानकारी वाली विंडो, पसंद के मुताबिक कॉन्टेंट वाली जानकारी वाली विंडो, और पसंद के मुताबिक फ़्रेम और बैकग्राउंड वाली जानकारी वाली विंडो दिखाई गई है.
iOS के लिए Maps SDK के साथ दिए गए, GitHub पर मौजूद कोड सैंपल में, पसंद के मुताबिक जानकारी वाली विंडो के सैंपल शामिल होते हैं. उदाहरण के लिए, MarkerInfoWindowViewController.m (Objective-C) या MarkerInfoWindowViewController.swift (Swift) की परिभाषा देखें.
इन सैंपल को डाउनलोड करने और चलाने के बारे में जानकारी के लिए, कोड सैंपल देखें.