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