मार्कर

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

कई मार्कर वाला मैप

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

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

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

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

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

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))
}

      

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));
}

      

किसी मार्कर के बारे में ज़्यादा जानकारी दिखाना

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

डेटा को मार्कर से जोड़ना

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

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
    }
}

      

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;
    }
}

      

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

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

मार्कर को खींचकर छोड़ने की सुविधा चालू करना

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

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

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

Kotlin

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

      

Java

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

      

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

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

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

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

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

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

Kotlin

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

      

Java

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

      

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

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

Kotlin

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

      

Java

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

      

मार्कर की ओपैसिटी को पसंद के मुताबिक बनाना

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

Kotlin

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

      

Java

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

      

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

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

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

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

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))
)

      

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)));

      

मार्कर को फ़्लैट करना

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

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

Kotlin

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

      

Java

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

      

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

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

नीचे दिए गए उदाहरण में, मार्कर को 90° घुमाया गया है. ऐंकर पॉइंट को 0.5,0.5 पर सेट करने से, मार्कर को उसके बेस के बजाय उसके सेंटर के चारों ओर घुमाया जाता है.

Kotlin

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

      

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));

      

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

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

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

Kotlin

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

      

Java

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

      

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

मार्कर हमेशा टाइल लेयर और मार्कर के अलावा अन्य ओवरले (ग्राउंड ओवरले, पॉलीलाइन, पॉलीगॉन, और अन्य शेप) के ऊपर बनाए जाते हैं. भले ही, अन्य ओवरले का z-इंडेक्स कुछ भी हो. मार्कर को अन्य ओवरले की तुलना में, अलग z-इंडेक्स ग्रुप में माना जाता है.

ज़ेड-इंडेक्स का क्लिक इवेंट पर क्या असर पड़ता है, इसके बारे में यहां पढ़ें.

मार्कर इवेंट मैनेज करना

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

इन इवेंट को सुना जा सकता है:

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

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

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

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

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

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