मार्कर

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

मार्कर, मैप पर एक जगह की जानकारी दिखाते हैं. आप डिफ़ॉल्ट रंग बदलकर या मार्कर आइकॉन को कस्टम इमेज से बदलकर, अपने मार्कर को कस्टमाइज़ कर सकते हैं. जानकारी विंडो किसी मार्कर को ज़्यादा जानकारी दे सकती है.

कोड सैंपल

GitHub पर ApiDemos डेटा स्टोर करने की जगह में एक ऐसा नमूना शामिल होता है जो अलग-अलग तरह के मार्कर को दिखाता है:

Java

कोटलिन

सुविधा के बारे में जानकारी

मार्कर, मैप पर जगहों की पहचान करते हैं. डिफ़ॉल्ट मार्कर एक स्टैंडर्ड आइकॉन का इस्तेमाल करता है, जो Google Maps का लुक और स्टाइल होता है. एपीआई का इस्तेमाल करके आइकॉन का रंग, इमेज या ऐंकर पॉइंट बदला जा सकता है. मार्कर, Marker टाइप के ऑब्जेक्ट होते हैं और इन्हें मैप में GoogleMap.addMarker(markerOptions) वाले तरीके से जोड़ा जाता है.

मार्कर इंटरैक्टिव होने के लिए डिज़ाइन किए गए हैं. उन्हें डिफ़ॉल्ट रूप से click इवेंट मिलते हैं. इनका इस्तेमाल अक्सर जानकारी वाली विंडो को उपलब्ध कराने के लिए, इवेंट लिसनर के साथ किया जाता है. मार्कर की draggable प्रॉपर्टी को true पर सेट करके, उपयोगकर्ता मार्कर की जगह बदल सकते हैं. मार्कर को इधर-उधर ले जाने की सुविधा को चालू करने के लिए, दबाकर रखें.

डिफ़ॉल्ट रूप से, जब कोई उपयोगकर्ता किसी मार्कर पर टैप करता है, तो मैप टूलबार, मैप के सबसे नीचे दाईं ओर दिखता है. इससे उपयोगकर्ता को Google Maps के मोबाइल ऐप्लिकेशन का तुरंत ऐक्सेस मिल जाता है. यहां टूलबार को बंद किया जा सकता है. ज़्यादा जानकारी के लिए, कंट्रोल के लिए गाइड देखें.

मार्कर का इस्तेमाल शुरू करना

Maps Live के इस एपिसोड में, Android के लिए Maps SDK टूल का इस्तेमाल करके, आपके मैप में मार्कर जोड़ने की बुनियादी बातें बताई गई हैं.

कोई मार्कर जोड़ें

नीचे दिए गए उदाहरण में, मैप में मार्कर जोड़ने का तरीका दिखाया गया है. इस मार्कर को -33.852,151.211 कोऑर्डिनेट (सिडनी, ऑस्ट्रेलिया) में बनाया जाता है. इस पर क्लिक करने पर, जानकारी विंडो में 'सिडर' में मौजूद स्ट्रिंग 'मार्कर' दिखती है.

Java


@Override
public void onMapReady(GoogleMap googleMap) {
    // Add a marker in Sydney, Australia,
    // and move the map's camera to the same location.
    LatLng sydney = new LatLng(-33.852, 151.211);
    googleMap.addMarker(new MarkerOptions()
        .position(sydney)
        .title("Marker in Sydney"));
    googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}

      

Kotlin


override fun onMapReady(googleMap: GoogleMap) {
    // Add a marker in Sydney, Australia,
    // and move the map's camera to the same location.
    val sydney = LatLng(-33.852, 151.211)
    googleMap.addMarker(
        MarkerOptions()
            .position(sydney)
            .title("Marker in Sydney")
    )
    googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}

      

किसी मार्कर के बारे में अतिरिक्त जानकारी दिखाना

जब उपयोगकर्ता मैप पर किसी मार्कर पर टैप करता है, तो सामान्य तौर पर एक जगह या किसी जगह के बारे में अतिरिक्त जानकारी दिखाना ज़रूरी होता है. जानकारी विंडो की गाइड देखें.

डेटा को मार्कर से संबद्ध करना

Marker.setTag() का इस्तेमाल करके, आर्बिट्ररी डेटा ऑब्जेक्ट को मार्कर के साथ सेव किया जा सकता है. साथ ही, Marker.getTag() का इस्तेमाल करके डेटा ऑब्जेक्ट को रिकवर किया जा सकता है. नीचे दिया गया नमूना दिखाता है कि आप टैग का इस्तेमाल करके मार्कर पर कितनी बार क्लिक किया गया है, उसकी गिनती कैसे की जा सकती है:

Java


/**
 * A demo class that stores and retrieves data objects with each marker.
 */
public class MarkerDemoActivity extends AppCompatActivity implements
    GoogleMap.OnMarkerClickListener,
    OnMapReadyCallback {

    private final LatLng PERTH = new LatLng(-31.952854, 115.857342);
    private final LatLng SYDNEY = new LatLng(-33.87365, 151.20689);
    private final LatLng BRISBANE = new LatLng(-27.47093, 153.0235);

    private Marker markerPerth;
    private Marker markerSydney;
    private Marker markerBrisbane;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_markers);
        SupportMapFragment mapFragment =
            (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    /** Called when the map is ready. */
    @Override
    public void onMapReady(GoogleMap map) {
        // Add some markers to the map, and add a data object to each marker.
        markerPerth = map.addMarker(new MarkerOptions()
            .position(PERTH)
            .title("Perth"));
        markerPerth.setTag(0);

        markerSydney = map.addMarker(new MarkerOptions()
            .position(SYDNEY)
            .title("Sydney"));
        markerSydney.setTag(0);

        markerBrisbane = map.addMarker(new MarkerOptions()
            .position(BRISBANE)
            .title("Brisbane"));
        markerBrisbane.setTag(0);

        // Set a listener for marker click.
        map.setOnMarkerClickListener(this);
    }

    /** Called when the user clicks a marker. */
    @Override
    public boolean onMarkerClick(final Marker marker) {

        // Retrieve the data from the marker.
        Integer clickCount = (Integer) marker.getTag();

        // Check if a click count was set, then display the click count.
        if (clickCount != null) {
            clickCount = clickCount + 1;
            marker.setTag(clickCount);
            Toast.makeText(this,
                marker.getTitle() +
                    " has been clicked " + clickCount + " times.",
                Toast.LENGTH_SHORT).show();
        }

        // Return false to indicate that we have not consumed the event and that we wish
        // for the default behavior to occur (which is for the camera to move such that the
        // marker is centered and for the marker's info window to open, if it has one).
        return false;
    }
}

      

Kotlin


/**
 * A demo class that stores and retrieves data objects with each marker.
 */
class MarkerDemoActivity : AppCompatActivity(),
    OnMarkerClickListener, OnMapReadyCallback {
    private val PERTH = LatLng(-31.952854, 115.857342)
    private val SYDNEY = LatLng(-33.87365, 151.20689)
    private val BRISBANE = LatLng(-27.47093, 153.0235)

    private var markerPerth: Marker? = null
    private var markerSydney: Marker? = null
    private var markerBrisbane: Marker? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_markers)
        val mapFragment =
            supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment?
        mapFragment!!.getMapAsync(this)
    }

    /** Called when the map is ready.  */
    override fun onMapReady(map: GoogleMap) {
        // Add some markers to the map, and add a data object to each marker.
        markerPerth = map.addMarker(
            MarkerOptions()
                .position(PERTH)
                .title("Perth")
        )
        markerPerth?.tag = 0
        markerSydney = map.addMarker(
            MarkerOptions()
                .position(SYDNEY)
                .title("Sydney")
        )
        markerSydney?.tag = 0
        markerBrisbane = map.addMarker(
            MarkerOptions()
                .position(BRISBANE)
                .title("Brisbane")
        )
        markerBrisbane?.tag = 0

        // Set a listener for marker click.
        map.setOnMarkerClickListener(this)
    }

    /** Called when the user clicks a marker.  */
    override fun onMarkerClick(marker: Marker): Boolean {

        // Retrieve the data from the marker.
        val clickCount = marker.tag as? Int

        // Check if a click count was set, then display the click count.
        clickCount?.let {
            val newClickCount = it + 1
            marker.tag = newClickCount
            Toast.makeText(
                this,
                "${marker.title} has been clicked $newClickCount times.",
                Toast.LENGTH_SHORT
            ).show()
        }

        // Return false to indicate that we have not consumed the event and that we wish
        // for the default behavior to occur (which is for the camera to move such that the
        // marker is centered and for the marker's info window to open, if it has one).
        return false
    }
}

      

यहां कुछ स्थितियों के उदाहरण दिए गए हैं, जिनमें मार्कर के साथ डेटा को सेव करना और उसे फिर से पाना उपयोगी होता है:

  • आपका ऐप्लिकेशन अलग-अलग तरह के मार्कर की ज़रूरतों को पूरा कर सकता है. जब उपयोगकर्ता उन पर क्लिक करता है, तो आपका ऐप्लिकेशन उन पर अलग तरह का तरीका लगाता है. ऐसा करने के लिए, String को मार्कर के साथ सेव करें, ताकि टाइप के बारे में बताया जा सके.
  • हो सकता है कि आप किसी ऐसे सिस्टम से इंटरैक्ट कर रहे हों जिसमें यूनीक रिकॉर्ड आइडेंटिफ़ायर हों, जहां मार्कर उस सिस्टम के खास रिकॉर्ड दिखाते हैं.
  • किसी मार्कर की z-इंडेक्स तय करते समय, मार्कर डेटा की प्राथमिकता का इस्तेमाल किया जा सकता है.

मार्कर को खींचने लायक बनाएं

आप मैप में किसी मार्कर को जोड़ने के बाद उसकी जगह बदल सकते हैं, बशर्ते कि उसकी draggable प्रॉपर्टी true पर सेट हो. खींचने के लिए मार्कर को दबाकर रखें. स्क्रीन से अपनी उंगली हटाने पर, मार्कर उस जगह पर ही रहेगा.

मार्कर डिफ़ॉल्ट रूप से ड्रैग नहीं किए जा सकते. मैप पर जोड़ने के पहले आपको मैप में जोड़ने के लिए MarkerOptions.draggable(boolean) या Marker.setDraggable(boolean) से मार्कर को साफ़ तौर पर सेट करना होगा. आप मार्कर खींचें इवेंट में बताए गए तरीके से मार्कर पर ड्रैग इवेंट सुन सकते हैं.

नीचे दिए गए स्निपेट में, पर्थ, ऑस्ट्रेलिया में एक खींचा जा सकने वाला मार्कर जोड़ा गया है.

Java


final LatLng perthLocation = new LatLng(-31.90, 115.86);
Marker perth = map.addMarker(
    new MarkerOptions()
        .position(perthLocation)
        .draggable(true));

      

Kotlin


val perthLocation = LatLng(-31.90, 115.86)
val perth = map.addMarker(
    MarkerOptions()
        .position(perthLocation)
        .draggable(true)
)

      

मार्कर को पसंद के मुताबिक बनाएं

इस वीडियो में मैप पर जगहों को विज़ुअलाइज़ करने के लिए, मार्कर का इस्तेमाल करने के तरीके दिखाए गए हैं.

मार्कर, डिफ़ॉल्ट आइकॉन की जगह दिखाने के लिए एक कस्टम इमेज तय कर सकते हैं. आइकॉन तय करने पर, ऐसी कई प्रॉपर्टी सेट हो जाती हैं जो मार्कर के विज़ुअल व्यवहार पर असर डालती हैं.

मार्कर इन प्रॉपर्टी की मदद से, पसंद के मुताबिक बनाए जा सकते हैं:

रैंक (ज़रूरी है)
मैप पर मार्कर की जगह की LatLng वैल्यू. Marker ऑब्जेक्ट के लिए, सिर्फ़ यह एक ज़रूरी प्रॉपर्टी है.
एंकर
इमेज पर मौजूद पॉइंट, जो मार्कर की LatLng स्थिति में रखा जाएगा. यह इमेज के बीच में डिफ़ॉल्ट रूप से दिखती है.
ऐल्फ़ा वर्शन
मार्कर की अपारदर्शिता को सेट करता है. डिफ़ॉल्ट वैल्यू 1.0 होती है.
टाइटल
स्ट्रिंग, जो उपयोगकर्ता को जानकारी विंडो में तब दिखती है, जब उपयोगकर्ता मार्कर पर टैप करता है.
स्निपेट
शीर्षक के नीचे दिखाया जाने वाला अतिरिक्त टेक्स्ट.
आइकॉन
एक बिट मैप, जो डिफ़ॉल्ट मार्कर इमेज की जगह पर दिखाया जाता है.
खींचने और छोड़ने लायक
अगर आप उपयोगकर्ता को मार्कर को दूसरी जगह ले जाने की अनुमति देना चाहते हैं, तो true पर सेट करें. डिफ़ॉल्ट वैल्यू false होती है.
दिख रहा है
मार्कर को दिखाई न देने के लिए false पर सेट करें. डिफ़ॉल्ट वैल्यू true होती है.
फ़्लैट या बिलबोर्ड ओरिएंटेशन
डिफ़ॉल्ट रूप से, मार्कर बिलबोर्ड ओरिएंटेशन का इस्तेमाल करते हैं. इसका मतलब है कि मैप की सतह के बजाय, वे डिवाइस की स्क्रीन के हिसाब से ड्रॉ किए जाते हैं. मैप को घुमाने, झुकाने या ज़ूम करने से मार्कर का ओरिएंटेशन नहीं बदलता है. मार्कर को पृथ्वी के सपाट रखने के लिए, उसका ओरिएंटेशन सेट किया जा सकता है. जब मैप को घुमाया जाता है, तो समतल मार्कर बदल जाते हैं. साथ ही, मैप के झुकाए जाने पर व्यू बदल जाता है. मैपबोर्ड के ज़ूम इन या ज़ूम आउट करने पर, बिलबोर्ड मार्कर की तरह ही यहां भी फ़्लैट मार्कर अपने साइज़ को बनाए रखते हैं.
घुमाएं
मार्कर का ओरिएंटेशन, जिसे घड़ी की दिशा में डिग्री में तय किया गया है. अगर मार्कर सपाट है, तो डिफ़ॉल्ट स्थिति बदल जाती है. किसी फ़्लैट मार्कर के लिए डिफ़ॉल्ट जगह को अलाइन किया जाता है. जब मार्कर सपाट न हो, तो डिफ़ॉल्ट स्थिति ऊपर की ओर होती है और घुमाव इस तरह होता है कि मार्कर हमेशा कैमरे की ओर रहे.

नीचे दिया गया स्निपेट, डिफ़ॉल्ट आइकॉन के साथ एक आसान मार्कर बनाता है.

Java


final LatLng melbourneLocation = new LatLng(-37.813, 144.962);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLocation));

      

Kotlin


val melbourneLocation = LatLng(-37.813, 144.962)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLocation)
)

      

मार्कर के रंग को पसंद के मुताबिक बनाएं

आइकॉन() मेथड से BitmapDescriptor ऑब्जेक्ट पास करके, डिफ़ॉल्ट मार्कर इमेज के रंग को अपनी पसंद के मुताबिक बनाया जा सकता है. BitmapDescriptorFactory ऑब्जेक्ट के साथ, पहले से तय रंगों के सेट या BitmapDescriptorFactory.defaultMarker(float hue) तरीके से पसंद के मुताबिक मार्कर का रंग सेट किया जा सकता है. रंग 0 से 360 के बीच का होता है. यह कलर व्हील पर पॉइंट को दिखाता है.

Java


final LatLng melbourneLocation = new LatLng(-37.813, 144.962);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLocation)
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));

      

Kotlin


val melbourneLocation = LatLng(-37.813, 144.962)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLocation)
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
)

      

मार्कर की अपारदर्शिता को पसंद के मुताबिक बनाएं

आप मार्कर विकल्प.ऐल्फ़ा() तरीके से मार्कर की अपारदर्शिता को कंट्रोल कर सकते हैं. ऐल्फ़ा को 0.0 और 1.0 के बीच एक फ़्लोट के रूप में दिखाया जाना चाहिए, जहां 0 पूरी तरह से पारदर्शी है और 1 पूरी तरह से अपारदर्शिता है.

Java


final LatLng melbourneLocation = new LatLng(-37.813, 144.962);
Marker melbourne = map.addMarker(new MarkerOptions()
    .position(melbourneLocation)
    .alpha(0.7f));

      

Kotlin


val melbourneLocation = LatLng(-37.813, 144.962)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLocation)
        .alpha(0.7f)
)

      

मार्कर की इमेज को पसंद के मुताबिक बनाएं

डिफ़ॉल्ट मार्कर इमेज को कस्टम मार्कर इमेज से बदला जा सकता है. इसे अक्सर एक आइकॉन कहा जाता है. कस्टम आइकॉन हमेशा BitmapDescriptor के तौर पर सेट किए जाते हैं और BitmapDescriptorFactory क्लास में दिए गए तरीकों में से किसी एक का इस्तेमाल करके तय किए जाते हैं.

fromAsset(String assetName)
एसेट डायरेक्ट्री में बिट मैप इमेज का नाम इस्तेमाल करके कस्टम मार्कर बनाता है.
fromBitmap(Bitmap image)
बिट मैप इमेज से कस्टम मार्कर बनाता है.
fromFile(String fileName)
डिवाइस के स्टोरेज में मौजूद बिट मैप इमेज फ़ाइल के नाम का इस्तेमाल करके, कस्टम आइकॉन बनाता है.
fromPath(String absolutePath)
बिट मैप इमेज के ऐब्सलूट फ़ाइल पाथ से कस्टम मार्कर बनाता है.
fromResource(int resourceId)
बिट मैप इमेज के रिसॉर्स आईडी का इस्तेमाल करके, पसंद के मुताबिक मार्कर बनाता है.

नीचे दिया गया स्निपेट एक कस्टम आइकॉन के साथ मार्कर बनाता है.

Java


final LatLng melbourneLocation = new LatLng(-37.813, 144.962);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLocation)
        .title("Melbourne")
        .snippet("Population: 4,137,400")
        .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));

      

Kotlin


val melbourneLocation = LatLng(-37.813, 144.962)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLocation)
        .title("Melbourne")
        .snippet("Population: 4,137,400")
        .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow))
)

      

मार्कर को फ़्लैट करें

आम तौर पर, मार्कर को स्क्रीन के हिसाब से बनाया जाता है. मैप को घुमाने, झुकाने या ज़ूम करने से मार्कर का ओरिएंटेशन नहीं बदलता है. आप मार्कर को पृथ्वी के सपाट रखने के लिए उसका ओरिएंटेशन सेट कर सकते हैं. इस तरह से मार्क किए गए मार्कर, मैप के घूमने पर घूमने के साथ-साथ मैप के झुकाने पर भी व्यू बदल जाएंगे. मैप के ज़ूम इन या ज़ूम आउट करने पर, फ़्लैट मार्कर का साइज़ बना रहेगा.

मार्कर का ओरिएंटेशन बदलने के लिए, मार्कर की flat प्रॉपर्टी को true पर सेट करें.

Java


final LatLng perthLocation = new LatLng(-31.90, 115.86);
Marker perth = map.addMarker(
    new MarkerOptions()
        .position(perthLocation)
        .flat(true));

      

Kotlin


val perthLocation = LatLng(-31.90, 115.86)
val perth = map.addMarker(
    MarkerOptions()
        .position(perthLocation)
        .flat(true)
)

      

मार्कर को घुमाना

आप Marker के साथ मार्कर को उसके ऐंकर पॉइंट के आस-पास घुमा सकते हैं.setRotation() तरीका. डिफ़ॉल्ट रूप से घुमाव को घड़ी की दिशा में डिग्री में मापा जाता है. मैप पर मार्कर के सपाट होने पर, डिफ़ॉल्ट स्थिति उत्तर की ओर होती है. जब मार्कर सपाट नहीं होता है, तो डिफ़ॉल्ट स्थिति ऊपर की ओर संकेत कर रही होती है और घुमाव ऐसा होता है कि मार्कर हमेशा कैमरे की ओर रहता है.

नीचे दिया गया उदाहरण मार्कर को 90° घुमाता है. 0.5,0.5

Java


final LatLng perthLocation = new LatLng(-31.90, 115.86);
Marker perth = map.addMarker(
    new MarkerOptions()
        .position(perthLocation)
        .anchor(0.5f,0.5f)
        .rotation(90.0f));

      

Kotlin


val perthLocation = LatLng(-31.90, 115.86)
val perth = map.addMarker(
    MarkerOptions()
        .position(perthLocation)
        .anchor(0.5f, 0.5f)
        .rotation(90.0f)
)

      

मार्कर z-इंडेक्स

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

नीचे दिए गए कोड स्निपेट में, MarkerOptions.zIndex() को कॉल करके, मार्कर के विकल्पों वाले ऑब्जेक्ट में z-इंडेक्स सेट करें:

Java


map.addMarker(new MarkerOptions()
    .position(new LatLng(10, 10))
    .title("Marker z1")
    .zIndex(1.0f));

      

Kotlin


map.addMarker(
    MarkerOptions()
        .position(LatLng(10.0, 10.0))
        .title("Marker z1")
        .zIndex(1.0f)
)

      

Marker.getZIndex() पर कॉल करके, मार्कर के z-इंडेक्स को ऐक्सेस किया जा सकता है. साथ ही, Marker.setZIndex() पर कॉल करके इसे बदला जा सकता है.

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

नीचे क्लिक इवेंट पर z-इंडेक्स का असर के बारे में पढ़ें.

मार्कर इवेंट हैंडल करें

Maps API की मदद से, मार्कर इवेंट को सुना जा सकता है और उनका जवाब दिया जा सकता है. इन इवेंट को सुनने के लिए, आपको मार्कर से जुड़े GoogleMap ऑब्जेक्ट के लिए, उससे जुड़ा लिसनर सेट करना होगा. जब इवेंट, मैप पर किसी एक मार्कअप में होता है, तो सुनने वाले का कॉलबैक पैरामीटर से जुड़े Marker ऑब्जेक्ट से शुरू होता है. Marker ऑब्जेक्ट के अपने रेफ़रंस से Marker ऑब्जेक्ट की तुलना करने के लिए, आपको equals() का इस्तेमाल करना चाहिए, न कि ==.

यहां दिए गए इवेंट सुने जा सकते हैं:

मार्कर के क्लिक इवेंट

मार्कर पर क्लिक इवेंट सुनने के लिए, OnMarkerClickListener का इस्तेमाल किया जा सकता है. इस पहचानकर्ता को मैप पर सेट करने के लिए, GoogleMap.setOnMarkerClickListener(OnMarkerClickListener) पर कॉल करें. जब कोई उपयोगकर्ता किसी मार्कर पर क्लिक करेगा, तो onMarkerClick(Marker) को कॉल किया जाएगा और मार्कर को आर्ग्युमेंट के तौर पर पास किया जाएगा. यह तरीका एक बूलियन दिखाता है, जिससे यह पता चलता है कि आपने इवेंट का इस्तेमाल किया है या नहीं. उदाहरण के लिए, आपको डिफ़ॉल्ट तरीका लागू नहीं करना है. अगर यह false दिखाता है, तो डिफ़ॉल्ट तरीका, आपके कस्टम व्यवहार में जोड़ दिया जाएगा. किसी मार्कर क्लिक इवेंट का डिफ़ॉल्ट तरीका यह है कि वह जानकारी विंडो दिखाए (अगर उपलब्ध हो) और कैमरे को इस तरह से ले जाएं कि मार्कर, मैप पर केंद्रित हो.

क्लिक इवेंट पर z-इंडेक्स का असर:

  • जब कोई उपयोगकर्ता, मार्कर के क्लस्टर पर क्लिक करता है, तो सबसे ज़्यादा z-इंडेक्स वाले मार्कर के लिए क्लिक इवेंट ट्रिगर होता है.
  • हर क्लिक के लिए, ज़्यादा से ज़्यादा एक इवेंट ट्रिगर होता है. दूसरे शब्दों में, क्लिक को मार्कर या नीचे के z-इंडेक्स मान वाले अन्य ओवरले पर नहीं भेजा जाता.
  • मार्कर के किसी क्लस्टर पर क्लिक करने से बाद में होने वाले क्लिक हर क्लिक की जगह बदल जाते हैं. इसके लिए हर क्लिक को अलग-अलग चुना जाता है. साइकल का क्रम सबसे पहले z-इंडेक्स को प्राथमिकता देता है, फिर क्लिक बिंदु से निकटता.
  • अगर उपयोगकर्ता क्लस्टर की निकटता के बाहर क्लिक करता है, तो API, क्लस्टर को फिर से कैलकुलेट करता है और क्लिक साइकल की स्थिति को रीसेट करता है, ताकि यह शुरुआत से शुरू हो सके.
  • क्लिक इवेंट, साइकल को रीस्टार्ट करने से पहले मार्कर क्लस्टर से दूसरे आकार और ओवरले में जाता है.
  • मार्कर, दूसरे ओवरले या आकार (पॉलीलाइन, पॉलीगॉन, सर्कल, और/या ओवरले) की तुलना में अलग से z-इंडेक्स ग्रुप में माने जाते हैं. भले ही, दूसरे ओवरले का z-इंडेक्स हो. अगर कई मार्कर, ओवरले या आकार एक दूसरे के ऊपर दिखते हैं, तो क्लिक इवेंट सबसे पहले मार्कर के क्लस्टर पर साइकल करता है, फिर दूसरे क्लिक करने लायक ओवरले या आकार के लिए ट्रिगर होता है. ऐसा उनके z-इंडेक्स मानों पर आधारित होता है.

मार्कर ड्रैग इवेंट

किसी मार्कर पर इवेंट सुनने के लिए, आप OnMarkerDragListener का इस्तेमाल कर सकते हैं. इस पहचानकर्ता को मैप पर सेट करने के लिए, GoogleMap.setOnMarkerDragListener पर कॉल करें. मार्कर को खींचने के लिए, उपयोगकर्ता को मार्कर को दबाकर रखना होगा. जब उपयोगकर्ता स्क्रीन से अपनी उंगली हटाता है, तो मार्कर उस जगह पर ही रहेगा. जब किसी मार्कर को खींचा जाता है, तो शुरुआत में onMarkerDragStart(Marker) को कॉल किया जाता है. जब तक मार्कर निकाला जा रहा है, onMarkerDrag(Marker) को लगातार कॉल किया जा रहा है. खींचकर छोड़ने के आखिर में onMarkerDragEnd(Marker) को कॉल किया जाता है. Marker.getPosition() पर कॉल करके आप किसी भी समय मार्कर की स्थिति पा सकते हैं.