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

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

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

कोड सैंपल

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

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