जानकारी वाले विंडो की मदद से, उपयोगकर्ता को मार्कर पर टैप करने पर जानकारी दिखाई जा सकती है.
जानकारी वाली विंडो, डिवाइस की स्क्रीन के हिसाब से ओरिएंट की जाती है. यह विंडो, उससे जुड़े मार्कर के ऊपर, बीच में दिखती है. डिफ़ॉल्ट जानकारी वाली विंडो में, टाइटल बोल्ड होता है और टाइटल के नीचे स्निपेट टेक्स्ट होता है.
जानकारी वाले विंडो का कॉन्टेंट, मार्कर की 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) की परिभाषा देखें.
इन सैंपल को डाउनलोड करने और चलाने के बारे में जानकारी के लिए, कोड के सैंपल देखें.