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

प्लैटफ़ॉर्म चुनें: 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) की परिभाषा देखें.

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