
मार्कर, मैप पर जगहों की पहचान करते हैं. डिफ़ॉल्ट मार्कर, 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.defaultMarker(float hue) तरीके से, मार्कर का रंग पसंद के मुताबिक सेट किया जा सकता है.BitmapDescriptorFactory ह्यू, 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)- बिटमैप इमेज से, मार्कर को पसंद के मुताबिक बनाता है.
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 होती है.
मार्कर के विकल्पों वाले ऑब्जेक्ट पर z-इंडेक्स सेट करने के लिए, MarkerOptions.zIndex() को कॉल करें. इसके बारे में, कोड के इस स्निपेट में बताया गया है:
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-इंडेक्स कुछ भी हो. अगर एक से ज़्यादा मार्कर, ओवरले या आकार एक-दूसरे के ऊपर ओवरले किए जाते हैं, तो क्लिक इवेंट सबसे पहले मार्कर के क्लस्टर में साइकल करता है.
मार्कर को खींचने और छोड़ने से जुड़े इवेंट
मार्कर को खींचने और छोड़ने से जुड़े इवेंट को सुनने के लिए, OnMarkerDragListener का इस्तेमाल किया जा सकता है. मैप पर इस लिसनर को सेट करने के लिए, GoogleMap.setOnMarkerDragListener को कॉल करें. मार्कर को खींचने और छोड़ने के लिए, उपयोगकर्ता को मार्कर को दबाकर रखना होगा. स्क्रीन से उंगली हटाने पर, मार्कर उसी पोज़िशन में बना रहेगा. मार्कर को खींचने और छोड़ने की कार्रवाई शुरू होने पर, सबसे पहले onMarkerDragStart(Marker) को कॉल किया जाता है. मार्कर को खींचने और छोड़ने की कार्रवाई के दौरान, onMarkerDrag(Marker) को लगातार कॉल किया जाता है. मार्कर को खींचने और छोड़ने की कार्रवाई खत्म होने पर, onMarkerDragEnd(Marker) को कॉल किया जाता है. Marker.getPosition() को कॉल करके, मार्कर की पोज़िशन कभी भी पाई जा सकती है.