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

प्लैटफ़ॉर्म चुनें: 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");

      

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

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

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

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

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