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

प्लैटफ़ॉर्म चुनें: 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 ऑब्जेक्ट में ग्राउंड ओवरले जोड़ने का तरीका बताया गया है.

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

      

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

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

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

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

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