जानकारी विंडो

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript

मार्कर के ऊपर दिखने वाली जानकारी विंडो.

जानकारी विंडो की मदद से, उपयोगकर्ता को जानकारी दिखाई जा सकती है. इसके लिए, उपयोगकर्ता को मार्कर पर टैप करना होगा.

जानकारी वाली विंडो, डिवाइस की स्क्रीन के हिसाब से बनाई जाती है. यह विंडो, उससे जुड़े मार्कर के ऊपर बीच में होती है. डिफ़ॉल्ट जानकारी विंडो में, टाइटल बोल्ड में होता है. साथ ही, टाइटल के नीचे स्निपेट टेक्स्ट होता है.

जानकारी विंडो का कॉन्टेंट, मार्कर की 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 के nil रिटर्न करने पर कॉल किया जाता है.

  • 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) की परिभाषा देखें.

इन सैंपल को डाउनलोड करने और चलाने के बारे में जानकारी पाने के लिए, कोड सैंपल देखें.