मार्कर

प्लैटफ़ॉर्म चुनें: 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 (सिडनी, ऑस्ट्रेलिया) निर्देशांक पर बनाया जाता है और क्लिक किए जाने पर जानकारी विंडो में 'मार्कर इन सिडनी' दिखाता है.

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

      

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

आइकॉन() तरीके का इस्तेमाल करके, 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)));

      

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

मार्कर की अपारदर्शिता (ओपैसिटी) को मार्कर विकल्प.ऐल्फ़ा() तरीके से कंट्रोल किया जा सकता है. ऐल्फ़ा को 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)
बिटमैप इमेज से कस्टम मार्कर बनाता है.
fromFile(String fileName)
डिवाइस के स्टोरेज में मौजूद बिटमैप इमेज फ़ाइल के नाम का इस्तेमाल करके, पसंद के मुताबिक आइकॉन बनाता है.
fromPath(String absolutePath)
बिटमैप इमेज के ऐब्सलूट पाथ से कस्टम मार्कर बनाता है.
fromResource(int resourceId)
बिटमैप इमेज के संसाधन आईडी का इस्तेमाल करके कस्टम मार्कर बनाता है.

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

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-इंडेक्स मैप पर अन्य मार्कर के संबंध में इस मार्कर के स्टैक क्रम को बताता है. ज़्यादा z-इंडेक्स वाला मार्कर कम z-इंडेक्स वाले मार्कर के ऊपर बनाया जाता है. z-इंडेक्स की डिफ़ॉल्ट वैल्यू 0 है.

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

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-इंडेक्स को ऐक्सेस कर सकते हैं और Marker.setZIndex() को कॉल करके इसे बदल सकते हैं.

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

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

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

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

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

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

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

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

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

मार्कर को खींचें और छोड़ें इवेंट

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