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

प्लैटफ़ॉर्म चुनें: 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 का सबक्लास बनाकर, जानकारी वाले विंडो के कॉन्टेंट को पसंद के मुताबिक बनाएं. यह सबक्लास, कस्टम जानकारी वाले विंडो के लेआउट को तय करता है. उस सबक्लास में, अपनी पसंद के मुताबिक व्यू तय करें. उदाहरण के लिए, टाइटल और स्निपेट टेक्स्ट दिखाने के लिए, कस्टम UILabel इंस्टेंस का इस्तेमाल किया जा सकता है. साथ ही, जानकारी वाले विंडो में इमेज जोड़ने के लिए, UIImageView इंस्टेंस जैसे अन्य व्यू का इस्तेमाल किया जा सकता है.

पक्का करें कि आपका ViewController, GMSIndoorDisplayDelegate प्रोटोकॉल को लागू करता हो और mapView:markerInfoWindow: इवेंट के लिए एक लिसनर तय करता हो. इस इवेंट लिसनर को तब कॉल किया जाता है, जब कोई मार्कर चुना जाने वाला होता है. साथ ही, यह आपको अपनी कस्टम UIView क्लास का एक इंस्टेंस दिखाता है, ताकि मार्कर के इस्तेमाल की जाने वाली कस्टम जानकारी वाली विंडो तय की जा सके.

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

जानकारी वाली विंडो की तुलना

iOS के लिए Maps SDK के साथ दिए गए, GitHub पर मौजूद कोड सैंपल में, पसंद के मुताबिक जानकारी वाली विंडो के सैंपल शामिल होते हैं. उदाहरण के लिए, MarkerInfoWindowViewController.m (Objective-C) या MarkerInfoWindowViewController.swift (Swift) की परिभाषा देखें.

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