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