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

प्लैटफ़ॉर्म चुनें: 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()

      

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() इवेंट ट्रिगर नहीं होगा. बाद वाला व्यवहार यह मानकर किया जाता है कि आपको पता है कि जानकारी विंडो बंद होकर फिर से खुल जाएगी.

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