ग्राउंड ओवरले ऐसे इमेज ओवरले होते हैं जो अक्षांश/देशांतर से जुड़े होते हैं निर्देशांकों को दिखाता है, ताकि वे मैप को खींचने या ज़ूम करने पर हिल सकें.
कोड सैंपल
GitHub पर ApiDemos रिपॉज़िटरी में ग्राउंड ओवरले दिखाने वाला सैंपल:
- GroundOverlayDemoActivity - Java: ग्राउंड ओवरले की सुविधाएं और Java में मौजूद लिसनर
- GroundOverlayDemoActivity - Kotlin: ग्राउंड ओवरले की सुविधाएं और Kotlin में लिसनर
परिचय
ग्राउंड ओवरले वह इमेज होती है जिसे मैप पर जोड़ा जाता है. मार्कर, ग्राउंड से अलग है ओवरले स्क्रीन के बजाय पृथ्वी की सतह पर होते हैं. इसलिए मैप को घुमाने, झुकाने या ज़ूम करने से चित्र का ओरिएंटेशन बदल जाएगा. ग्राउंड ओवरले तब काम आते हैं, जब आपको किसी इमेज के किसी हिस्से में बदलाव करना हो मैप. यदि आप व्यापक तस्वीरें जोड़ना चाहते हैं जो इसके बड़े हिस्से को कवर करती है मैप के लिए, टाइल ओवरले इस्तेमाल करें.
ओवरले जोड़ें
GroundOverlay
जोड़ने के लिए,
GroundOverlayOptions
ऑब्जेक्ट जो दोनों को परिभाषित करता है
इमेज और पोज़िशन. आप चाहें, तो ऐसी अतिरिक्त सेटिंग तय कर सकते हैं जो
मैप पर इमेज की पोज़िशनिंग पर असर डालता है. एक बार
ज़रूरी विकल्प चुनकर, ऑब्जेक्ट को GoogleMap.addGroundOverlay()
को पास करें
विधि का इस्तेमाल करके मैप पर इमेज जोड़ें. addGroundOverlay()
तरीका नतीजे के तौर पर
GroundOverlay
ऑब्जेक्ट; आपको उस फ़ाइल का रेफ़रंस देना चाहिए
यह ऑब्जेक्ट सबमिट करें.
सिलसिलेवार निर्देश:
- नया
GroundOverlayOptions
ऑब्जेक्ट इंस्टैंशिएट करें BitmapDescriptor
के तौर पर इमेज बताएं.- उपलब्ध तरीकों में से किसी एक का इस्तेमाल करके, इमेज की जगह सेट करें:
position(LatLng location, float width, float height)
position(LatLng location, float width)
positionFromBounds(LatLngBounds bounds)
- अपने हिसाब से कोई भी वैकल्पिक प्रॉपर्टी सेट करें, जैसे कि
transparency
. - मैप में इमेज जोड़ने के लिए,
GoogleMap.addGroundOverlay()
पर कॉल करें.
नीचे दिया उदाहरण बताता है कि किसी मौजूदा विज्ञापन में ग्राउंड ओवरले कैसे जोड़ा जा सकता है
GoogleMap
ऑब्जेक्ट.
Kotlin
val newarkLatLng = LatLng(40.714086, -74.228697) val newarkMap = GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922)) .position(newarkLatLng, 8600f, 6500f) map.addGroundOverlay(newarkMap)
Java
LatLng newarkLatLng = new LatLng(40.714086, -74.228697); GroundOverlayOptions newarkMap = new GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922)) .position(newarkLatLng, 8600f, 6500f); map.addGroundOverlay(newarkMap);
यदि आप ग्राउंड ओवरले को जोड़ने के बाद उसे बदलना या निकालना चाहते हैं
मैप को मैप करने के लिए, पक्का करें कि GroundOverlay
ऑब्जेक्ट पर आपका कंट्रोल रहे. आप
बाद में इस ऑब्जेक्ट में बदलाव करके ओवरले में बदलाव कर सकता है.
Kotlin
// Add an overlay to the map, retaining a handle to the GroundOverlay object. val imageOverlay = map.addGroundOverlay(newarkMap)
Java
// Add an overlay to the map, retaining a handle to the GroundOverlay object. GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);
ओवरले हटाना
आप
GroundOverlay.remove()
तरीका.
Kotlin
imageOverlay?.remove()
Java
imageOverlay.remove();
ओवरले बदलना
ग्राउंड ओवरले इमेज को मैप पर जोड़ दिए जाने के बाद आप इसे बदल सकते हैं
GroundOverlay.setImage(BitmapDescriptor)
तरीका.
Kotlin
// Update the GroundOverlay with a new image of the same dimension imageOverlay?.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
Java
// Update the GroundOverlay with a new image of the same dimension imageOverlay.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922));
setImage()
विधि मौजूदा इमेज को
वही डाइमेंशन.
ग्राउंड ओवरले की जगह बदलें
ग्राउंड ओवरले की स्थिति दो तरीकों से तय की जा सकती है:
- तय करने के लिए, ओवरले को सेंटर में लाने के लिए
LatLng
का और मीटर में डाइमेंशन का इस्तेमाल करना इमेज का साइज़. - इसके उत्तर पूर्व और दक्षिण पश्चिम कोनों को तय करने के लिए
LatLngBounds
का इस्तेमाल किया जा रहा है इमेज.
आपको ग्राउंड ओवरले की स्थिति जोड़ने से पहले इसे मैप.
इमेज को पोज़िशन करने के लिए, जगह की जानकारी का इस्तेमाल करें
इमेज जोड़ने पर एक LatLng तय किया जाता है, जिसमें ऐंकर तय किया जाएगा
और ओवरले की चौड़ाई (मीटर में). कॉन्टेंट बनाने
anchor
डिफ़ॉल्ट रूप से
इमेज. आप वैकल्पिक रूप से ओवरले की ऊंचाई (मीटर में) दे सकते हैं. अगर आपने
अगर ओवरले की ऊंचाई नहीं बताई जाती है, तो यह अपने-आप
इसका कैलकुलेशन, इमेज के अनुपात को बनाए रखने के लिए किया गया है.
नीचे दिया गया कोड, इमेज को 40.714086, -74.228697
पर रखता है
जो 8.6 कि॰मी॰ चौड़ी और 6.5 कि॰मी॰ ऊंची है. इमेज को सबसे नीचे बाईं ओर ऐंकर किया गया है.
Kotlin
val newarkMap = GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922)) .anchor(0f, 1f) .position(LatLng(40.714086, -74.228697), 8600f, 6500f)
Java
GroundOverlayOptions newarkMap = new GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922)) .anchor(0, 1) .position(new LatLng(40.714086, -74.228697), 8600f, 6500f);
इमेज की पोज़िशन सेट करने के लिए, LatLngBounds का इस्तेमाल करें
आपको LatLngBounds
देना होता है, जिसमें इमेज मौजूद होती है. कॉन्टेंट बनाने
LatLngBounds
इमेज के उत्तर पूर्व और दक्षिण-पश्चिम कोने को सेट करता है. टास्क कब शुरू होगा
इमेज को मैप पर बनाया गया है, तो इसे सीमाओं में फ़िट करने के लिए घुमाया जाएगा. अगर
बाउंड, ओरिजनल आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से मैच नहीं होंगी. ऐसा होने पर, इमेज तिरछी होगी.
नीचे दिया गया कोड मैप पर एक इमेज को अपने दक्षिण पश्चिम कोने से जुड़ा हुआ है
40.712216,-74.22655
और इसके उत्तर-पूर्वी कोने की सीमा
40.773941, -74.12544
.
Kotlin
val newarkBounds = LatLngBounds( LatLng(40.712216, -74.22655), // South west corner LatLng(40.773941, -74.12544) // North east corner ) val newarkMap = GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922)) .positionFromBounds(newarkBounds)
Java
LatLngBounds newarkBounds = new LatLngBounds( new LatLng(40.712216, -74.22655), // South west corner new LatLng(40.773941, -74.12544)); // North east corner GroundOverlayOptions newarkMap = new GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922)) .positionFromBounds(newarkBounds);
डेटा को ग्राउंड ओवरले से जोड़ें
आप GroundOverlay.setTag()
को कॉल करके
ग्राउंड ओवरले के साथ आर्बिट्रेरी डेटा ऑब्जेक्ट और डेटा वापस पाने
ऑब्जेक्ट को ढूंढने के लिए, GroundOverlay.getTag()
का इस्तेमाल किया गया है.
नीचे दिया गया कोड सैंपल, ग्राउंड ओवरले के साथ स्ट्रिंग की जानकारी सेव करता है:
Kotlin
val sydneyGroundOverlay = map.addGroundOverlay( GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.harbour_bridge)) .position(LatLng(-33.873, 151.206), 100f) .clickable(true) ) sydneyGroundOverlay?.tag = "Sydney"
Java
GroundOverlay sydneyGroundOverlay = map.addGroundOverlay(new GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.harbour_bridge)) .position(new LatLng(-33.873, 151.206), 100) .clickable(true)); sydneyGroundOverlay.setTag("Sydney");
यहां उन स्थितियों के कुछ उदाहरण दिए गए हैं जब डेटा को सेव और वापस पाना फ़ायदेमंद होता है ग्राउंड ओवरले के साथ:
- आपके ऐप्लिकेशन में अलग-अलग ग्राउंड ओवरले इस्तेमाल किए जा सकते हैं और आपको जब उपयोगकर्ता उन पर क्लिक करता है, तो उन्हें अलग ढंग से दिखाया जाता है.
- ऐसा हो सकता है कि आपने किसी ऐसे सिस्टम का इस्तेमाल किया हो जिसमें यूनीक रिकॉर्ड आइडेंटिफ़ायर हों, जहां ओवरले उस सिस्टम में खास रिकॉर्ड दिखाते हैं.
- ओवरले डेटा ओवरले करें.
ग्राउंड ओवरले इवेंट मैनेज करना
डिफ़ॉल्ट रूप से, ग्राउंड ओवरले
क्लिक नहीं किया जा सकता. क्लिक करने की सुविधा को चालू या बंद करने के लिए, कॉल करें
GroundOverlay.setClickable(boolean)
.
OnGroundOverlayClickListener
का इस्तेमाल करें
क्लिक किए जा सकने वाले ग्राउंड ओवरले पर क्लिक इवेंट सुनने के लिए. इस लिसनर को चालू करने के लिए
मैप, कॉल
GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener)
.
जब कोई उपयोगकर्ता ग्राउंड ओवरले पर क्लिक करता है, तो आपको
onGroundOverlayClick(GroundOverlay)
कॉलबैक.