दस्तावेज़ / बुनियादी / पॉलीगॉन

पॉलीगॉन

परिधि के निर्देशांक और मनमानी संख्या में छेद (holes) वाला एक सतह है। भरण और रेखा शैलियों के साथ मानचित्र दृश्य में रखने भर से, क्षेत्र का प्रदर्शन या मास्क प्रभाव बनाया जा सकता है। छेद के संचालन में मानचित्र SDK के अनुसार विशिष्टताएँ होती हैं, लेकिन MapConductor यह सुनिश्चित करता है कि किसी भी प्रदाता पर यह एक ही दिखाई दे।

POINTS
GeoPoint[]
HOLES
GeoPoint[][]
FILL / STROKE
color · width
GEODESIC
true / false
प्लेटफ़ॉर्म

01 · पॉलीगॉन की स्थिति

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

PolygonPageViewModel.kt · Jetpack Compose
val polygonState =
    PolygonState(
        points = outerRing,
        holes = listOf(holeA, holeB),
        strokeColor = Color.Red,
        strokeWidth = 3.dp,
        fillColor = Color(0x4D0064E6),
        onClick = { event -> viewModel.onPolygonClick(event) },
    )

Polygon(polygonState)

// शीर्ष और छेद बस दोबारा लिखने से अपडेट हो जाते हैं
polygonState.holes = nextHoles
गुण
विवरण
points
परिधि के निर्देशांक। बंद करने की प्रक्रिया आंतरिक रूप से की जाती है, इसलिए अंत में आरंभ बिंदु को दोहराने की आवश्यकता नहीं है।
holes
छेदों के निर्देशांक की एक सरणी। एकाधिक निर्दिष्ट किए जा सकते हैं, और वे ओवरलैप हो सकते हैं।
fillColor
भरण का रंग। अल्फा द्वारा पारदर्शिता निर्दिष्ट की जाती है।
strokeColor / strokeWidth
परिधि और छेदों की रूपरेखा का रंग और मोटाई। मोटाई तार्किक इकाइयों में है, और डिवाइस के रिज़ॉल्यूशन के बावजूद यह समान दिखाई देती है।
geodesic
क्या किनारों को ग्रेट सर्कल (geodesic) से जोड़ना है। बड़े क्षेत्रों में प्रभावी होता है।
zIndex · extra
ओवरलैप क्रम और मनमाना साथी डेटा।
onClick
टैप हैंडलर। यह सतह की स्थिति और टैप किए गए निर्देशांक प्राप्त करता है।

02 · छेद (holes) और ओवरलैप का संघटन

छेद परिधि से हटाई गई क्षेत्र हैं। मास्क प्रभाव में अक्सर "दिखाने वाली जगह" को छेद के रूप में रखा जाता है, और तब छेद आपस में ओवरलैप हो सकते हैं।

कई मानचित्र SDK ओवरलैप किए गए छेदों को उसी रूप में पास करने पर ओवरलैप वाले हिस्से में रूपरेखा खींच देते हैं, जिससे छेदों के बीच की सीमा दिखाई देने लगती है। MapConductor छेदों को संयोजित करने के बाद आरेखित करता है, इसलिए ओवरलैप को एक छेद के रूप में माना जाता है और अतिरिक्त रेखाएँ नहीं बनती हैं।

चित्र · आपस में ओवरलैप करते दो त्रिकोणीय छेद देने पर
RAW SDK
ओवरलैप जस का तस चला जाता है और उसके आर-पार रूपरेखाएँ दिखती हैं — साफ़ पता चलता है कि छेद दो हैं।
MAPCONDUCTOR
छेद पहले जोड़ दिए जाते हैं: ओवरलैप एक ही छेद बन जाता है, और सिर्फ़ उसकी बाहरी आकृति पर रेखा खिंचती है।
दोनों जगह ऐप का कोड और छेदों के निर्देशांक एक जैसे हैं। जोड़ना स्टेट बनते समय ही हो जाता है, इसलिए शीर्षों को ओवरलैप में लाते-ले जाते समय भी यह साथ चलता रहता है।
ओवरलैप किए गए छेदों को उसी रूप में पास करें
// ओवरलैप करते छेद जस के तस दिए जा सकते हैं; भीतर वे एक छेद बन जाते हैं
PolygonState(
    points = outerRing,
    holes =
        listOf(
            triangleA, // ← ये आपस में ओवरलैप करते हैं
            triangleB,
        ),
    fillColor = Color(0xCC787880),
)

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

छेदों के ओवरलैप के अलावा, सतह आरेखण में इंजन के अनुसार अंतर आ सकता है। MapConductor इन्हें आंतरिक रूप से समायोजित करता है और यह सुनिश्चित करता है कि समान PolygonState से समान चित्र बने।

HOLE UNION

ओवरलैपिंग छेदों को मिलाएं

छेदों के बीच ओवरलैप बनाने की प्रक्रिया के दौरान एक क्षेत्र में मिला दिया जाता है। न तो आकृति की रेखा ओवरलैपिंग हिस्से में दिखाई देती है और न ही भराव दोहराया जाता है।

GEODESIC

वक्र न खींच सकने वाले इंजन को भी वही आकार

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

ANTIMERIDIAN

अंतर्राष्ट्रीय तिथि रेखा को पार करने वाला फलक

180 डिग्री देशांतर को पार करने वाले फलक को सीमा पर विभाजित करके दिया जाता है। पृथ्वी को उल्टी दिशा में पार करने वाले भराव वाले इंजन में भी सही तरफ भरा जाता है।

HIT TEST

टैप परीक्षण भी आम

टैप परीक्षण आम तर्क से किया जाता है, और छेद के अंदर टैप पर प्रतिक्रिया नहीं होती। इंजन छेद पर विचार करे या न करे, दिखाई देने वाले अनुसार ही परीक्षण होता है।

04 · टैप

onClick सतह की स्थिति और टैप किए गए निर्देशांक प्राप्त करता है। भरण या extra से डेटा निकालकर विवरण प्रदर्शित करना एक सामान्य उपयोग है।

event.state

टैप किए गए फलक की स्थिति। भराव रंग और extra से डेटा निकाला जा सकता है।

event.clicked

टैप किए गए भौगोलिक निर्देशांक।

छेद प्रतिक्रिया नहीं करते

छेद के अंदर टैप करने पर भी, उस फलक की घटना ट्रिगर नहीं होती। केवल दिखाई देने वाला भरा हुआ हिस्सा ही इसका विषय है।

PolygonClickPageViewModel.kt
fun onPolygonClicked(event: PolygonEvent) {
    markerState = MarkerState(
        position = event.clicked,
        icon = DefaultMarkerIcon(fillColor = event.state.fillColor),
    )
}

यदि सतहें ओवरलैप कर रही हैं, तो ऊपर वाला (zIndex बड़ा वाला) प्राथमिकता पाता है। भले ही कई बड़े क्षेत्र रखे गए हों, प्रदर्शन सीमा से बाहर की सतहें निर्णय से बाहर रखी जाती हैं।

संबंधित पेज