ग्राउंड ओवरले

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

ग्राउंड ओवरले ऐसे इमेज ओवरले होते हैं जो अक्षांश/देशांतर से जुड़े होते हैं, ताकि मैप को खींचने या ज़ूम करने पर वे खिसक जाएं.

कोड सैंपल

GitHub पर ApiDemos डेटा स्टोर करने की जगह में, एक सैंपल शामिल है, जो ग्राउंड ओवरले दिखाता है:

शुरुआती जानकारी

ग्राउंड ओवरले ऐसी इमेज होती है जो किसी मैप पर स्थिर होती है. मार्कर से अलग, ग्राउंड ओवरले, स्क्रीन के बजाय पृथ्वी की सतह पर होते हैं. इसलिए, मैप को घुमाने, झुकाने या ज़ूम करने से इमेज का ओरिएंटेशन बदल जाएगा. ग्राउंड ओवरले तब काम आते हैं, जब आपको मैप के किसी इलाके में एक इमेज को ठीक करना हो. अगर आपको मैप के एक बड़े हिस्से को कवर करने वाली विशाल तस्वीरों का संग्रह जोड़ना है, तो टाइल ओवरले का इस्तेमाल करें.

ओवरले जोड़ें

GroundOverlay जोड़ने के लिए, कोई ऐसा GroundOverlayOptions ऑब्जेक्ट बनाएं जो इमेज और पोज़िशन, दोनों के बारे में बताए. आप वैकल्पिक तौर पर ऐसी अतिरिक्त सेटिंग तय कर सकते हैं, जो मैप पर इमेज की जगह पर असर डालेंगी. ज़रूरी विकल्प तय करने के बाद, ऑब्जेक्ट को GoogleMap.addGroundOverlay() तरीके में पास करें, ताकि मैप में इमेज जोड़ी जा सके. addGroundOverlay() का तरीका, GroundOverlay ऑब्जेक्ट दिखाता है; अगर आपको इस ऑब्जेक्ट में बाद में बदलाव करना है, तो आपको इसका रेफ़रंस बनाए रखना चाहिए.

सिलसिलेवार निर्देश:

  1. नया GroundOverlayOptions ऑब्जेक्ट इंस्टैंशिएट करें
  2. इमेज को BitmapDescriptor के तौर पर दिखाएं.
  3. यहां दिए गए तरीकों में से किसी एक का इस्तेमाल करके, इमेज की जगह सेट करें:
    • position(LatLng location, float width, float height)
    • position(LatLng location, float width)
    • positionFromBounds(LatLngBounds bounds)
  4. अपनी पसंद के हिसाब से, कोई भी वैकल्पिक प्रॉपर्टी सेट करें, जैसे कि transparency.
  5. मैप में इमेज जोड़ने के लिए GoogleMap.addGroundOverlay() को कॉल करें.

नीचे दिए गए उदाहरण में, मौजूदा GoogleMap ऑब्जेक्ट में ग्राउंड ओवरले जोड़ने का तरीका बताया गया है.

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

      

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)

      

अगर आपको ग्राउंड ओवरले को मैप में जोड़ने के बाद बदलना है या हटाना है, तो GroundOverlay ऑब्जेक्ट को दबाकर रखें. आप इस ऑब्जेक्ट में बदलाव करके, ओवरले में बाद में भी बदलाव कर सकते हैं.

Java


// Add an overlay to the map, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

      

Kotlin


// Add an overlay to the map, retaining a handle to the GroundOverlay object.
val imageOverlay = map.addGroundOverlay(newarkMap)

      

ओवरले हटाना

ग्राउंड ओवरले को हटाने के लिए, GroundOverlay.remove() तरीके का इस्तेमाल किया जा सकता है.

Java


imageOverlay.remove();

      

Kotlin


imageOverlay?.remove()

      

ओवरले बदलना

ग्राउंड ओवरले इमेज को मैप पर जोड़ने के बाद, उसे बदला जा सकता है. इसके लिए, GroundOverlay.setImage(BitmapDescriptor) तरीके का इस्तेमाल करें.

Java


// Update the GroundOverlay with a new image of the same dimension
imageOverlay.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922));

      

Kotlin


// Update the GroundOverlay with a new image of the same dimension

// 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 कि॰मी॰ है. इमेज को सबसे नीचे बाईं ओर ऐंकर किया गया है.

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

      

Kotlin


val newarkMap = GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .anchor(0f, 1f)
    .position(LatLng(40.714086, -74.228697), 8600f, 6500f)

      

इमेज को सही जगह पर रखने के लिए LatLngBounds का इस्तेमाल करना

आपने इमेज वाला LatLngBounds दिया हो. LatLngBounds, इमेज के उत्तर-पूर्व और दक्षिण-पश्चिमी हिस्से को सेट करता है. जब इमेज को मैप पर बनाया जाएगा, तो उसे सीमा में फ़िट करने के लिए घुमाया जाएगा. अगर सीमाएं मूल आसपेक्ट रेशियो से मेल नहीं खाती हैं, तो इमेज टेढ़ी-मेढ़ी होगी.

यहां दिए गए कोड की मदद से, मैप पर ऐसी इमेज दिखती है जिसका दक्षिण-पश्चिमी हिस्सा 40.712216,-74.22655 और उत्तर-पूर्वी कोने को 40.773941, -74.12544 से जोड़ा जाता है.

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

      

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)

      

डेटा को ग्राउंड ओवरले से जोड़ना

ग्राउंड ओवरले के साथ आर्बिट्ररी डेटा ऑब्जेक्ट को स्टोर करने और GroundOverlay.getTag() का इस्तेमाल करके, डेटा ऑब्जेक्ट वापस पाने के लिए, GroundOverlay.setTag() को कॉल करें.

नीचे दिए गए कोड सैंपल में, स्ट्रिंग की जानकारी के साथ ग्राउंड ओवरले मौजूद होता है:

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

      

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"

      

यहां उन स्थितियों के कुछ उदाहरण दिए गए हैं, जब ग्राउंड ओवरले के साथ डेटा को स्टोर करना और फिर से पाना ज़रूरी होता है:

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

ग्राउंड ओवरले इवेंट मैनेज करना

डिफ़ॉल्ट रूप से, ग्राउंड ओवरले क्लिक नहीं किए जा सकते. क्लिक करने की सुविधा को चालू और बंद करने के लिए, GroundOverlay.setClickable(boolean) पर कॉल करें.

क्लिक किए जा सकने वाले ग्राउंड ओवरले पर क्लिक इवेंट सुनने के लिए, OnGroundOverlayClickListener का इस्तेमाल करें. इस लिसनर को मैप पर सेट करने के लिए, GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener) पर कॉल करें. जब कोई उपयोगकर्ता किसी ग्राउंड ओवरले पर क्लिक करता है, तो आपको onGroundOverlayClick(GroundOverlay) कॉलबैक मिलेगा.