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

प्लैटफ़ॉर्म चुनें: 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 शून्य वापस आ जाता है, तब यह कॉल किया जाता है.

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

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