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

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript

जानकारी विंडो, मैप के ऊपर पॉप-अप विंडो में टेक्स्ट या इमेज दिखाती है. जानकारी वाली विंडो हमेशा किसी मार्कर से जुड़ी होती हैं. डिफ़ॉल्ट रूप से, मार्कर पर टैप करने पर जानकारी वाली विंडो दिखती है.

कोड सैंपल

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()
if (melbourne?.isInfoWindowShown == true) {
    melbourne.hideInfoWindow()
}

      

Java

final LatLng melbourneLatLng = new LatLng(-37.81319, 144.96298);
Marker melbourne =
        map.addMarker(new MarkerOptions().position(melbourneLatLng).title("Melbourne"));
melbourne.showInfoWindow();
if (melbourne.isInfoWindowShown()) {
    melbourne.hideInfoWindow();
}

      

अलग-अलग क्लस्टर किए गए मार्कर के लिए भी जानकारी विंडो बनाई जा सकती हैं. अलग-अलग क्लस्टर किए गए मार्कर के लिए जानकारी विंडो जोड़ने की गाइड पढ़ें.

कस्टम जानकारी विंडो

जानकारी विंडो के कॉन्टेंट और डिज़ाइन को भी पसंद के मुताबिक बनाया जा सकता है. ऐसा करने के लिए, आपको InfoWindowAdapter इंटरफ़ेस को लागू करना होगा. इसके बाद, अपने इंप्लिमेंटेशन के साथ GoogleMap.setInfoWindowAdapter() को कॉल करना होगा. इंटरफ़ेस में दो तरीके शामिल हैं, जिन्हें आपको लागू करना होगा: getInfoWindow(Marker) और getInfoContents(Marker). एपीआई सबसे पहले getInfoWindow(Marker) को कॉल करेगा. अगर null मिलता है, तो वह getInfoContents(Marker) को कॉल करेगा. अगर यह भी null दिखाता है, तो डिफ़ॉल्ट जानकारी विंडो का इस्तेमाल किया जाएगा.

इनमें से पहला (getInfoWindow()) आपको ऐसा व्यू उपलब्ध कराने की अनुमति देता है जिसका इस्तेमाल, पूरी जानकारी विंडो के लिए किया जाएगा. इनमें से दूसरा (getInfoContents()) आपको विंडो के कॉन्टेंट को पसंद के मुताबिक बनाने की अनुमति देता है. हालांकि, यह डिफ़ॉल्ट जानकारी विंडो फ़्रेम और बैकग्राउंड को बनाए रखता है.

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

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

जानकारी विंडो के इवेंट

MarkerDemoActivity सैंपल में, जानकारी विंडो के इवेंट को रजिस्टर करने और उन्हें मैनेज करने के लिए, कोड का उदाहरण शामिल है.

जानकारी वाली विंडो पर क्लिक इवेंट सुनने के लिए, OnInfoWindowClickListener का इस्तेमाल किया जा सकता है. मैप पर इस लिसनर को सेट करने के लिए, GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener) को कॉल करें. जब कोई उपयोगकर्ता जानकारी विंडो पर क्लिक करता है, तो onInfoWindowClick(Marker) को कॉल किया जाता है और जानकारी विंडो को डिफ़ॉल्ट हाइलाइट रंग (स्लेटी) में हाइलाइट किया जाता है.

Kotlin

map.setOnInfoWindowClickListener { marker ->
    Toast.makeText(
        context,
        "Info window clicked",
        Toast.LENGTH_SHORT,
    ).show()
}

      

Java

map.setOnInfoWindowClickListener(
        new GoogleMap.OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {
                Toast.makeText(context, "Info window clicked", Toast.LENGTH_SHORT).show();
            }
        });

      

इसी तरह, OnInfoWindowLongClickListener की मदद से, लंबे समय तक क्लिक करने वाले इवेंट को सुना जा सकता है. इसे सेट करने के लिए, GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) को कॉल करें. यह लिसनर, क्लिक लिसनर की तरह ही काम करता है. साथ ही, onInfoWindowClose(Marker) कॉलबैक के साथ लंबे क्लिक इवेंट पर इसकी सूचना दी जाएगी.

जानकारी विंडो बंद होने पर सूचना पाने के लिए, OnInfoWindowCloseListener का इस्तेमाल करें. इसे GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) को कॉल करके सेट किया जा सकता है. आपको onInfoWindowClose(Marker) से कॉलबैक मिलेगा.

जानकारी विंडो को रीफ़्रेश करने के बारे में जानकारी: अगर उपयोगकर्ता किसी ऐसे मार्कर पर टैप करके जानकारी विंडो को रीफ़्रेश करता है जिसकी जानकारी विंडो पहले से खुली है, तो onInfoWindowClose() इवेंट ट्रिगर होता है. हालांकि, अगर खुली हुई जानकारी विंडो पर प्रोग्राम के हिसाब से Marker.showInfoWindow() को कॉल किया जाता है, तो onInfoWindowClose() इवेंट ट्रिगर नहीं होता. बाद वाला व्यवहार इस अनुमान पर आधारित है कि आपको पता है कि जानकारी विंडो बंद हो जाएगी और फिर से खुल जाएगी.

जानकारी वाली विंडो के बारे में पिछले सेक्शन में बताया गया है कि जानकारी वाली विंडो, लाइव व्यू नहीं होती. इसके बजाय, व्यू को मैप पर एक इमेज के तौर पर रेंडर किया जाता है. इस वजह से, व्यू पर सेट किए गए किसी भी लिसनर को अनदेखा कर दिया जाता है. साथ ही, व्यू के अलग-अलग हिस्सों पर होने वाले क्लिक इवेंट के बीच अंतर नहीं किया जा सकता. हमारा सुझाव है कि आप अपनी पसंद के मुताबिक बनाई गई जानकारी विंडो में, इंटरैक्टिव कॉम्पोनेंट न डालें. जैसे, बटन, चेकबॉक्स या टेक्स्ट इनपुट.