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

प्लैटफ़ॉर्म चुनें: 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.setTag() का इस्तेमाल करके, डेटा ऑब्जेक्ट को वापस पाने के लिए GroundOverlay.setTag() को कॉल किया जा सकता है.GroundOverlay.getTag()

कोड के इस नमूने में ग्राउंड ओवरले के साथ एक स्ट्रिंग का ब्यौरा स्टोर किया गया है:

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) कॉलबैक मिलेगा.