दस्तावेज़ / बुनियादी / GroundImage

GroundImage ― मानचित्र पर छवि चिपकाएँ

दक्षिण-पश्चिम और उत्तर-पूर्व के दो बिंदुओं से सीमा निर्धारित करें, और वहाँ एक छवि फैलाएँ। सुविधाओं के फर्श नक्शे, पुराने मानचित्र, हवाई तस्वीरें, या स्वयं बनाए गए रंगीन नक्शे आदि, टाइल न की गई छवियों को जैसी है वैसे ही मानचित्र पर ओवरले किया जा सकता है। सीमा और पारदर्शिता बाद में बदली जा सकती है, और कैमरा संचालन के अनुसार छवि जमीन से चिपकी हुई दिखाई देती है।

BOUNDS
SW / NE
IMAGE
image / url
OPACITY
0.0 – 1.0
TILE SIZE
512 · केवल टाइल रेंडरिंग के समय
प्लेटफ़ॉर्म

01 · GroundImage की स्थिति

GroundImageState एक छवि का प्रतिनिधित्व करता है। इसमें सीमा, छवि, पारदर्शिता, और टैप हैंडलर होता है। आप प्रत्येक प्लेटफ़ॉर्म के लिए प्राकृतिक रूप से छवि पास कर सकते हैं (Android के लिए Drawable, iOS के लिए UIImage, Web के लिए URL)।

GroundImageMapPageViewModel.kt · Jetpack Compose
val groundImageState =
    GroundImageState(
        id = "groundImage",
        bounds =
            GeoRectBounds(
                southWest = southWestPosition,
                northEast = northEastPosition,
            ),
        image = drawable,       // Drawable जस का तस दें
        opacity = 0.5f,
        onClick = this::onGroundImageClick,
    )

GroundImage(groundImageState)
गुण
विवरण
bounds
छवि फैलाने के लिए आयताकार सीमा। दक्षिण-पश्चिम और उत्तर-पूर्व के दो बिंदुओं से निर्धारित करें।
image / imageUrl
प्रदर्शित करने के लिए छवि। Android के लिए Drawable, iOS के लिए UIImage, और Web के लिए छवि URL पास करें।
opacity
अपारदर्शिता। 0.0 पूरी तरह पारदर्शी, 1.0 अपारदर्शी। आधार मानचित्र के साथ ओवरले करके देखने के लिए इसे कम करें।
tileSize
रास्टर टाइल के रूप में रेंडर करते समय एक टाइल की भुजा की लंबाई। यह देशी छवि ओवरले द्वारा रेंडर किए गए प्रदाताओं में उपयोग नहीं किया जाता है। डिफ़ॉल्ट 512 रखने में कोई समस्या नहीं है।
extra
मनमाना संबंधित डेटा। टैप करने पर प्राप्त किया जा सकता है।
onClick
टैप हैंडलर। छवि की स्थिति और टैप किए गए निर्देशांक प्राप्त करता है।

02 · सीमा और पारदर्शिता

सीमा एक आयत है। यदि छवि का पहलू अनुपात और सीमा का पहलू अनुपात भिन्न है, तो इसे सीमा के अनुसार खींचा जाएगा, इसलिए कृपया उस सीमा को निर्दिष्ट करें जो चिपकाने वाले आरेखण के पहलू अनुपात से मेल खाती हो। सीमा, पारदर्शिता, और छवि सभी बाद में बदली जा सकती हैं, और बदलने पर रेंडरिंग में परिलक्षित होगा।

SW
NE
दक्षिण-पश्चिम (SW) और उत्तर-पूर्व (NE) बिंदु आयत तय करते हैं। यहाँ दिखी रूपरेखा और मार्कर सैंपल ऐप का कोड हैं।
BOUNDS

ड्रैग करके दायरा बनाएँ

दो बिंदुओं के मार्कर्स को ड्रैग करते हुए `bounds` को बदलने पर, चित्र अनुसरण करता है। हालाँकि, निरंतर अद्यतन का अनुसरण प्रदाता के अनुसार भिन्न होता है।

OPACITY

आधार मानचित्र के साथ ओवरलैप करें

पारदर्शिता कम करने पर, नीचे के मानचित्र की सड़कें और स्थान-नाम दिखाई देते हैं। इंजन के आधार पर परिवर्तन के समय और प्रभाव पर प्रतिबंध हो सकते हैं।

नमूना · पुराने मानचित्र को सीमा के अनुसार ओवरले किया गया
सीमा और पारदर्शिता बदलें
// कोनों के मार्कर खींचकर सीमा दोबारा बनाएँ
override fun onMarkerDrag(dragged: MarkerState) {
    when (dragged.id) {
        "south_west" -> southWestPosition = GeoPoint.from(dragged.position)
        "north_east" -> northEastPosition = GeoPoint.from(dragged.position)
    }
    bounds = GeoRectBounds(southWest = southWestPosition, northEast = northEastPosition)
}

// अपारदर्शिता बस असाइन कर दें
groundImageState.opacity = sliderOpacity

03 · किसी भी प्रदाता पर समान दिखाई देता है

GroundImage प्रत्येक मानचित्र SDK ड्राइवर में सबसे बड़े कार्यान्वयन अंतर वाली सुविधा है। छवि ओवरले तंत्र इंजन के आधार पर काफी भिन्न होते हैं, और कुछ में समकक्ष कार्यक्षमता भी नहीं होती है। MapConductor संभव होने पर इस अंतर को कम करता है, लेकिन कुछ प्रदाताओं में गतिशील परिवर्तनों पर प्रतिबंध बना रह सकता है।

PLACEMENT

समान दायरा, समान खिंचाव

चित्र निर्दिष्ट दायरे के अनुसार व्यवस्थित किया जाता है। इंजन की ओर से चित्र ओवरले के निर्देशांक तंत्र के अंतर की परवाह किए बिना, यह समान स्थिति और समान आकार में प्रदर्शित होता है।

NATIVE FIRST

पहले नेटिव सुविधाओं से आरेखित करें

प्रत्येक ड्राइवर, जहाँ तक संभव हो, उस मानचित्र SDK के विशिष्ट चित्र ओवरले की सुविधाओं का उपयोग करके इष्टतम रूप से आरेखित करता है (ArcGIS के लिए `MediaLayer` + `ImageElement`, Cesium के लिए `Rectangle` का चित्र सामग्री आदि)। यदि किसी इंजन में बिल्कुल समतुल्य सुविधा नहीं है, तो चित्र को काटकर टाइल के रूप में प्रदान किया जाता है और रास्टर लेयर के रूप में ओवरलैप किया जाता है। दोनों मार्गों में ऐप की ओर का कोड नहीं बदलता है।

LIMITATIONS

प्रदाता द्वारा प्रतिबंध

दायरे का पुनर्निर्माण (ड्रैग के दौरान निरंतर अद्यतन) और पारदर्शिता में परिवर्तन, इंजन की ओर से बाधाओं के कारण सीमित हो सकते हैं। स्थैतिक व्यवस्था किसी भी प्रदाता के लिए समान है, लेकिन गतिशील रूप से बदलने के उद्देश्यों के लिए लक्षित प्रदाता पर जाँच की अनुशंसा की जाती है।

HIT TEST

टैप परीक्षण भी समान है

टैप परीक्षण समान तर्क द्वारा किया जाता है, इसलिए इंजन द्वारा चित्र ओवरले के टैप का समर्थन किए जाने की परवाह किए बिना `onClick` को बुलाया जाता है।

04 · टैप

onClick छवि की स्थिति और टैप किए गए निर्देशांक प्राप्त करता है। नमूने में, टैप करने पर छवि को बदलकर प्रदर्शन स्विच किया जा रहा है।

टैप करके छवि बदलें
// टैप पर इमेज बदलें
override fun onGroundImageClick(clicked: GroundImageEvent) {
    val isBase = clicked.state.image == imageResources.image
    image = if (isBase) imageResources.clickedImage else imageResources.image
}
event.state

टैप किए गए चित्र की स्थिति। आप वर्तमान चित्र और `extra` को संदर्भित कर सकते हैं।

event.clicked

टैप किए गए भौगोलिक निर्देशांक। दायरे में कहाँ दबाया गया है, यह पता चलता है।

छवि के पारदर्शी हिस्से भी टैप क्षेत्र में शामिल हैं। यदि आप पारदर्शी हिस्सों को गैर-प्रतिक्रियाशील बनाना चाहते हैं, तो क्षेत्र को छवि की वास्तविक वस्तु के अनुसार सेट करें या बहुभुज का उपयोग करें।

संबंधित पेज