जानकारी वाली एक विंडो, मैप के ऊपर पॉप-अप विंडो में टेक्स्ट या इमेज दिखाती है. जानकारी विंडो को हमेशा मार्कर से ऐंकर किया जाता है. उनका डिफ़ॉल्ट व्यवहार मार्कर को टैप करने पर दिखता है.
कोड सैंपल
GitHub पर ApiDemos डेटा स्टोर करने की जगह में, एक सैंपल शामिल है. इसमें, जानकारी विंडो की सभी सुविधाओं के बारे में बताया गया है:
- MarkerDemoActivity - Java: जानकारी विंडो को पसंद के मुताबिक बनाना और जानकारी विंडो लिसनर का इस्तेमाल करना
- MarkerDemoActivity - Kotlin: जानकारी विंडो को पसंद के मुताबिक बनाना और जानकारी विंडो लिसनर का इस्तेमाल करना
शुरुआती जानकारी
जानकारी विंडो से आप उपयोगकर्ता को तब जानकारी दिखा सकते हैं, जब वे किसी मार्कर पर टैप कर रहे हों. एक बार में सिर्फ़ एक जानकारी विंडो दिखाई जाती है. अगर कोई उपयोगकर्ता किसी मार्कर पर क्लिक करता है, तो मौजूदा जानकारी विंडो बंद हो जाएगी और नई जानकारी विंडो दिखेगी. ध्यान दें कि अगर उपयोगकर्ता किसी ऐसे मार्कर पर क्लिक करता है जो फ़िलहाल जानकारी विंडो दिखा रहा है, तो वह जानकारी विंडो बंद हो जाती है और फिर से खुल जाती है.
जानकारी विंडो को डिवाइस की स्क्रीन पर फ़ोकस करके बनाया जाता है. यह विंडो डिवाइस से जुड़े मार्कर के ऊपर बीच में बनाई जाती है. डिफ़ॉल्ट जानकारी विंडो में टाइटल बोल्ड में होता है और टाइटल के नीचे (ज़रूरी नहीं) स्निपेट टेक्स्ट होता है.
जानकारी विंडो जोड़ें
जानकारी विंडो जोड़ने का सबसे आसान तरीका है, संबंधित मार्कर के title()
और snippet()
तरीकों को सेट करना. इन प्रॉपर्टी को सेट करने से उस मार्कर पर क्लिक किए जाने पर
एक जानकारी विंडो दिखाई देगी.
Java
final LatLng melbourneLatLng = new LatLng(-37.81319, 144.96298); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLatLng) .title("Melbourne") .snippet("Population: 4,137,400"));
Kotlin
val melbourneLatLng = LatLng(-37.81319, 144.96298) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLatLng) .title("Melbourne") .snippet("Population: 4,137,400") )
जानकारी विंडो दिखाएं/छिपाएं
जानकारी विंडो को उपयोगकर्ता के टच इवेंट का जवाब देने के लिए डिज़ाइन किया गया है. अगर आप चाहें, तो टारगेट मार्कर पर
showInfoWindow()
को कॉल करके, जानकारी विंडो को प्रोग्राम के हिसाब से दिखाया जा सकता है. hideInfoWindow()
पर कॉल करके, जानकारी वाली विंडो छिपाई जा सकती है.
Java
final LatLng melbourneLatLng = new LatLng(-37.81319, 144.96298); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLatLng) .title("Melbourne")); melbourne.showInfoWindow();
Kotlin
val melbourneLatLng = LatLng(-37.81319, 144.96298) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLatLng) .title("Melbourne") ) melbourne?.showInfoWindow()
आप अलग-अलग क्लस्टर किए गए मार्कर के लिए भी जानकारी विंडो बना सकते हैं. अलग-अलग क्लस्टर वाले मार्कर के लिए, जानकारी विंडो जोड़ने से जुड़ी गाइड पढ़ें.
कस्टम जानकारी विंडो
आप जानकारी विंडो की सामग्री और डिज़ाइन को कस्टमाइज़ भी कर सकते हैं. इसके लिए, आपको InfoWindowAdapter
इंटरफ़ेस को बेहतर तरीके से लागू करना होगा. इसके बाद, लागू करने के तरीके के हिसाब से
GoogleMap.setInfoWindowAdapter()
को कॉल करना होगा. इंटरफ़ेस में, लागू करने के दो तरीके होते हैं:
getInfoWindow(Marker)
और getInfoContents(Marker)
. एपीआई सबसे पहले getInfoWindow(Marker)
को कॉल करेगा और अगर null
दिखता है, तो getInfoContents(Marker)
को कॉल किया जाएगा. अगर इससे भी
null
दिखता है, तो जानकारी वाली डिफ़ॉल्ट विंडो का इस्तेमाल किया जाएगा.
इनमें से पहला (getInfoWindow()
) आपको एक ऐसा व्यू देने की अनुमति देता है जिसका इस्तेमाल पूरी जानकारी विंडो के लिए किया जाएगा. इनमें से दूसरी
(getInfoContents()
) की मदद से, विंडो के कॉन्टेंट को अपनी पसंद के मुताबिक बनाया जा सकता है. हालांकि, डिफ़ॉल्ट जानकारी विंडो फ़्रेम और बैकग्राउंड को भी बनाए रखा जा सकता है.
नीचे दी गई इमेज में एक डिफ़ॉल्ट जानकारी विंडो, कस्टमाइज़ किए गए कॉन्टेंट वाली जानकारी विंडो, और कस्टमाइज़ किए गए फ़्रेम और बैकग्राउंड के साथ एक जानकारी विंडो दिखाई गई है.

जानकारी विंडो इवेंट
MarkerDemoActivity सैंपल में, जानकारी विंडो इवेंट को रजिस्टर और मैनेज करने के लिए, उदाहरण वाला कोड शामिल है.
जानकारी विंडो पर इवेंट पर क्लिक करने के लिए, OnInfoWindowClickListener
का इस्तेमाल करें. इस लिसनर को मैप पर सेट करने के लिए,
GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener)
को कॉल करें. जब कोई
उपयोगकर्ता जानकारी विंडो पर क्लिक करता है, तो onInfoWindowClick(Marker)
को कॉल किया जाता है
और जानकारी विंडो को डिफ़ॉल्ट हाइलाइट रंग (स्लेटी) में हाइलाइट कर दिया जाता है.
Java
class InfoWindowActivity extends AppCompatActivity implements GoogleMap.OnInfoWindowClickListener, OnMapReadyCallback { @Override public void onMapReady(GoogleMap googleMap) { // Add markers to the map and do other map setup. // ... // Set a listener for info window events. googleMap.setOnInfoWindowClickListener(this); } @Override public void onInfoWindowClick(Marker marker) { Toast.makeText(this, "Info window clicked", Toast.LENGTH_SHORT).show(); } }
Kotlin
internal inner class InfoWindowActivity : AppCompatActivity(), OnInfoWindowClickListener, OnMapReadyCallback { override fun onMapReady(googleMap: GoogleMap) { // Add markers to the map and do other map setup. // ... // Set a listener for info window events. googleMap.setOnInfoWindowClickListener(this) } override fun onInfoWindowClick(marker: Marker) { Toast.makeText( this, "Info window clicked", Toast.LENGTH_SHORT ).show() } }
इसी तरह, OnInfoWindowLongClickListener
की मदद से, लंबे क्लिक वाले इवेंट के बारे में सुना जा सकता है. इन्हें GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener)
पर कॉल करके सेट किया जा सकता है.
यह लिसनर, क्लिक लिसनर की तरह ही काम करता है और लंबे क्लिक से जुड़े इवेंट के लिए, onInfoWindowClose(Marker)
कॉलबैक की मदद से सूचना दी जाती है.
जानकारी विंडो बंद होने पर सूचना पाने के लिए,
OnInfoWindowCloseListener
का इस्तेमाल करें. इसे
GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener)
पर कॉल करके सेट किया जा सकता है. आपको
onInfoWindowClose(Marker)
कॉलबैक मिलेगा.
जानकारी विंडो को रीफ़्रेश करने के बारे में अहम जानकारी: onInfoWindowClose()
इवेंट तब चालू होता है, जब उपयोगकर्ता किसी ऐसे मार्कर पर टैप करके जानकारी विंडो को रीफ़्रेश करता है जिसमें पहले से ही खुली
जानकारी वाली विंडो मौजूद है. हालांकि, अगर आपने प्रोग्राम बनाकर Marker.showInfoWindow()
को खुली जानकारी वाली विंडो पर कॉल किया है, तो onInfoWindowClose()
इवेंट सक्रिय नहीं होगा. यह कार्रवाई
इस आधार पर की जाती है कि आपको पता है कि जानकारी विंडो बंद हो जाएगी और
फिर से खुल जाएगी.
जैसा कि जानकारी विंडो के पिछले सेक्शन में बताया गया है, जानकारी विंडो एक लाइव व्यू नहीं होती है. इसके बजाय, व्यू को मैप पर इमेज के तौर पर रेंडर किया जाता है. इस वजह से, आपने व्यू के लिए कोई लिसनर सेट नहीं किया और आप व्यू के अलग-अलग हिस्सों पर क्लिक इवेंट के बीच फ़र्क़ नहीं कर सकते. आपको सलाह दी जाती है कि आप अपनी कस्टम जानकारी विंडो में इंटरैक्टिव कॉम्पोनेंट, जैसे कि बटन, चेकबॉक्स या टेक्स्ट इनपुट को न डालें.