मार्कर, मैप पर किसी एक जगह की जानकारी देते हैं. अपने मार्कर को पसंद के मुताबिक बनाने के लिए, डिफ़ॉल्ट रंग बदलें या मार्कर आइकॉन को कस्टम इमेज से बदलें. जानकारी वाली विंडो, मार्कर के बारे में ज़्यादा जानकारी दे सकती हैं.
कोड सैंपल
GitHub पर ApiDemos रिपॉज़िटरी में नमूना जो विभिन्न मार्कर सुविधाएँ प्रदर्शित करता है:
Kotlin
- MapWithMarker: मार्कर वाला एक आसान मैप. मार्कर-kt के साथ मैप जोड़ने के बारे में ट्यूटोरियल देखें.
- MarkerDemoActivity: मैप पर मार्कर का इस्तेमाल करना. इसमें विकल्प और लिसनर भी शामिल हैं
Java
- MapWithMarker: मार्कर के साथ एक सामान्य मैप. मार्कर के साथ मैप जोड़ने के बारे में ट्यूटोरियल देखें.
- MarkerDemoActivity: किसी मैप पर मार्कर का इस्तेमाल करके विकल्प चुनना और लिसनर
परिचय
मार्कर, मैप पर जगहों की पहचान करते हैं. डिफ़ॉल्ट मार्कर एक मानक का उपयोग करता है
आइकन, 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-index का फ़ैसला लेते समय इस्तेमाल की जाने वाली प्राथमिकता का पता चल सकता है.
मार्कर को खींचकर छोड़ने लायक बनाना
मैप में किसी मार्कर को जोड़ दिए जाने के बाद आप उसका स्थान बदल सकते हैं
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
ऑब्जेक्ट के लिए प्रॉपर्टी. - एंकर
- इमेज का वह बिंदु जिसे मार्कर. यह डिफ़ॉल्ट रूप से, इमेज के सबसे नीचे बीच में होता है.
- ऐल्फ़ा
- मार्कर की ओपैसिटी को सेट करता है. डिफ़ॉल्ट वैल्यू 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)));
मार्कर की ओपैसिटी को पसंद के मुताबिक बनाएं
आप Attribution.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-index
z-index से पता चलता है कि मैप पर मौजूद अन्य मार्कर के मुकाबले, इस मार्कर का स्टैक क्रम क्या है. ज़्यादा z-index वाला मार्कर, कम z-index वाले मार्कर के ऊपर दिखाया जाता है. z-index की डिफ़ॉल्ट वैल्यू 0
है.
मार्कर के विकल्प ऑब्जेक्ट पर z-index सेट करने के लिए, 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-index के असर के बारे में यहां पढ़ें.
मार्कर इवेंट मैनेज करना
Maps API की मदद से, मार्कर इवेंट को सुनने और उनका जवाब देने की सुविधा मिलती है. इन इवेंट को सुनने के लिए, आपको उस GoogleMap
ऑब्जेक्ट पर उससे जुड़ा लिसनर सेट करना होगा जिससे मार्कर जुड़े हैं. जब मैप पर मौजूद किसी मार्कर पर इवेंट होता है, तो पैरामीटर के तौर पर पास किए गए उससे जुड़े Marker
ऑब्जेक्ट के साथ, listener के कॉलबैक को शुरू किया जाएगा. इसकी तुलना करने के लिए
Marker
ऑब्जेक्ट, Marker
ऑब्जेक्ट के अपने रेफ़रंस के साथ है. आपको इसका इस्तेमाल करना होगा
==
नहीं, equals()
.
ये इवेंट सुने जा सकते हैं:
- मार्कर पर क्लिक करने से जुड़े इवेंट
- मार्कर को खींचकर छोड़ने से जुड़े इवेंट
- जानकारी वाली विंडो पर क्लिक करने से जुड़े इवेंट
मार्कर पर क्लिक करने से होने वाले इवेंट
सुनने के लिए OnMarkerClickListener
का इस्तेमाल किया जा सकता है
मार्कर पर क्लिक इवेंट के लिए. इस लिसनर को मैप पर सेट करने के लिए, कॉल करें
GoogleMap.setOnMarkerClickListener(OnMarkerClickListener)
. जब कोई उपयोगकर्ता किसी मार्कर पर क्लिक करता है, तो onMarkerClick(Marker)
को कॉल किया जाएगा और मार्कर को आर्ग्युमेंट के तौर पर पास किया जाएगा. इस तरीके से बूलियन वैल्यू मिलती है, जिससे पता चलता है कि
आपने इवेंट का इस्तेमाल किया है या नहीं (इसका मतलब है कि आपको डिफ़ॉल्ट सेटिंग को दिखाना है
व्यवहार). अगर यह false
दिखाता है, तो डिफ़ॉल्ट कार्रवाई
अतिरिक्त सेटिंग पर नज़र रखें. किसी मार्कर क्लिक का डिफ़ॉल्ट व्यवहार
इवेंट की जानकारी विंडो (अगर उपलब्ध हो) को दिखाना है और
कैमरा इस तरह सेट करें कि मार्कर मैप पर केंद्रित हो.
क्लिक इवेंट पर z-index का असर:
- जब कोई उपयोगकर्ता मार्कर के क्लस्टर पर क्लिक करता है, तो के लिए क्लिक इवेंट ट्रिगर होता है सबसे ज़्यादा z-इंडेक्स वाला मार्कर.
- हर क्लिक पर ज़्यादा से ज़्यादा एक इवेंट ट्रिगर होता है. दूसरे शब्दों में, क्लिक नहीं मार्कर या अन्य ओवरले तक कम z-इंडेक्स वैल्यू का इस्तेमाल करता है.
- मार्कर के क्लस्टर पर क्लिक करने पर, अगले क्लिक क्लस्टर में घूमते हैं और हर एक को चुनते हैं. साइकल के क्रम में, सबसे पहले z-index को प्राथमिकता दी जाती है. इसके बाद, क्लिक पॉइंट के आस-पास मौजूद आइटम को प्राथमिकता दी जाती है.
- अगर उपयोगकर्ता क्लस्टर के बाहर क्लिक करता है, तो एपीआई क्लस्टर का फिर से हिसाब लगाता है और क्लिक साइकल की स्थिति को रीसेट करता है, ताकि वह फिर से शुरू हो सके.
- क्लिक इवेंट, मार्कर क्लस्टर से होकर अन्य आकारों और ओवरले पर जाता है. इसके बाद, यह साइकल फिर से शुरू होता है.
- मार्कर की तुलना में, एक अलग z-इंडेक्स ग्रुप में मौजूद माना जाता है अन्य ओवरले या आकृतियों (पॉलीलाइन, पॉलीगॉन, सर्कल, और/या ग्राउंड) दूसरे ओवरले के z-इंडेक्स पर ध्यान दिए बिना). अगर एक-दूसरे के ऊपर कई मार्कर, ओवरले या आकार ओवरले किए गए हैं, तो क्लिक इवेंट पहले मार्कर के क्लस्टर में साइकल किया जाता है. इसके बाद, क्लिक किए जा सकने वाले अन्य ओवरले या आकार के लिए, उनकी z-index वैल्यू के आधार पर ट्रिगर किया जाता है.
मार्कर को खींचें और छोड़ें इवेंट
मार्कर पर खींचने और छोड़ने के इवेंट को सुनने के लिए, OnMarkerDragListener
का इस्तेमाल किया जा सकता है. इस लिसनर को मैप पर सेट करने के लिए, GoogleMap.setOnMarkerDragListener
को कॉल करें. मार्कर को खींचने के लिए, उपयोगकर्ता को देर तक दबाए रखना होगा
मार्कर पर क्लिक करें. जब उपयोगकर्ता अपना उंगली स्क्रीन से हटा लेगा, तब मार्कर उसी जगह पर रहेगा. जब कोई मार्कर खींचा जाता है,
onMarkerDragStart(Marker)
को शुरुआत में कॉल किया गया है. जब मार्कर लगाया जा रहा हो
खींचा गया, onMarkerDrag(Marker)
को लगातार कॉल किया जाता है. खींचें के आखिर में
onMarkerDragEnd(Marker)
पर कॉल किया गया है. Marker.getPosition()
को कॉल करके, मार्कर की पोज़िशन कभी भी देखी जा सकती है.