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

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

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