पत्रक: कंटेनर निर्देशांक बनाम परत निर्देशांक?


17

मानचित्र कंटेनर निर्देशांक और परत निर्देशांक के बीच अंतर क्या है ?

जो मैंने इकट्ठा किया, उससे मैप कंटेनर निर्देशांक हमेशा मैप व्यूपोर्ट के सापेक्ष होते हैं, और जब लेयर कॉर्डिनेट हमेशा कंटेनर कॉर्डर्स के समान मूल्यों के साथ शुरू होते हैं, तो वे मैप को पेंड करने के बाद बदल जाते हैं।

एपीआई जो निर्देशांक / बिंदु को संदर्भित करते हैं:

जवाबों:


21

संक्षिप्त जवाब

2012 में कंटेनरपॉइंट के तरीके वापस आने का अनुरोध करते हैं, और आज, वे थोड़े भ्रमित हैं।

सबसे अच्छा जवाब है केट अनुरक्षक व्लादिमीर Agafonkin का विवरण:

"लेयरपॉइंट वास्तव में मैप लेयर के सापेक्ष एक बिंदु है (div जिसमें टाइल और मार्कर होते हैं), न कि बाहरी मैप कंटेनर। आपको क्या चाहिए मैप। LayerPointToContainerPoint। लेकिन मैं मानता हूं कि इसे तुरंत प्राप्त करने के लिए कोई सुविधाजनक तरीका नहीं है, इसलिए इसे शेड्यूल करना। अगले संस्करण के लिए। "

लंबा जवाब

अधिक विवरण में:

कैटलॉग में मुख्य सार्वजनिक रूपांतरण के तरीके, हालांकि शायद ही कभी अनुप्रयोग डेवलपर्स द्वारा उपयोग किए जाते हैं, L.Map.project(latlng [, zoom])और L.Map.unproject(point [, zoom])

वेब मानचित्र टाइल्स की एक ग्रिड में विभाजित होते हैं, जिनमें से प्रत्येक समान पिक्सेल के साथ होता है। उच्च ज़ूम स्तरों पर, मैप को अधिक से अधिक पिक्सेल के साथ टाइलों की एक बड़ी संख्या में विभाजित किया जाता है। इस प्रकार मानचित्र का पिक्सेल आकार ज़ूम स्तर पर निर्भर है।

इसका मतलब यह है कि यदि आप अपने ब्राउज़र में एक कैटलॉग डेमो विंडो के साथ गड़बड़ कर रहे हैं, तो दिए गए latlng के लिए L.Map.project` का आउटपुट केवल तभी बदलेगा जब आप अंदर और बाहर ज़ूम करेंगे।

USC के नवीनतम संस्करण (0.7.3) के अनुसार, रीड्स की परिभाषा L.Map.latLngToLayerPoint:

latLngToLayerPoint: function (latlng) {
    var projectedPoint = this.project(L.latLng(latlng))._round();
    return projectedPoint._subtract(this.getPixelOrigin());
}

इसके विपरीत, L.Map.latLngToContainerPointपढ़ता है:

latLngToContainerPoint: function (latlng) {
    return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng)));
}

साथ L.Map.layerPointToContainerPointपरिभाषित होने के लिए:

layerPointToContainerPoint: function (point) { 
    return L.point(point).add(this._getMapPanePos());
}

निजी मानचित्र विधि वर्तमान मानचित्र स्थिति और इसकी स्थिति के बीच ऑफसेट को_getMapPanePos() लौटाती है जब इसे पहली बार बनाया गया था। यह केवल मैप पैन के दौरान बदलता है (ज़ूम के दौरान नहीं), इसलिए दिए गए लेटलिंग के अनुरूप लेयरपॉइंट और कंटेनरप्वाइंट के बीच का अंतर यह है कि लेयरपॉइंट मैप कंटेनर में अपने शुरुआती स्थान पर मैप के साथ लैट्लॉग की स्थिति है , जबकि कंटेनरप्वाइंट मानचित्र कंटेनर में लैट्ल की वर्तमान स्थिति है ।<div> <div>


1
आदमी - अगर मैं ऊपर चढ़ सकता हूं, तो आप 100 बार उठेंगे।
साद मलिक

0

संपादित करें: मुझे पता है कि मैं गलत था। कंटेनर निर्देशांक दृश्यमान फ्रेम के लिए प्रतीत होते हैं जबकि परत निर्देशांक दृश्यमान से बड़े क्षेत्र के लिए हैं। इस सवाल का जवाब देने के लिए मुझसे ज्यादा किसी जानकार की जरूरत है।


1
एलेक्स - मुझे विश्वास नहीं है कि यह सही है। कंटेनर निर्देशांक और परत निर्देशांक कंटेनर के मूल (शीर्ष-बाएँ) से पिक्सेल में निर्दिष्ट हैं। हालाँकि, जब मैं मैप को पैन करना शुरू करता हूं, तो मार्कर का लेयर कोऑर्डिनेट / पॉइंट वैसा ही रहता है जबकि किसी मार्कर के लिए मैप कोऑर्डिनेट / पॉइंट को टॉप-लेफ्ट ओरिजिन पॉइंट से संबंधित अपडेट किया जाता है।
साद मलिक

हाय @ SimFox3, तुम सही हो। और मुझे कुछ भी कहने से पहले उसका परीक्षण करना चाहिए था! अब मैं बात करता हूं कि परत बिंदु एक समन्वय है जिसे एक प्रकार की 'विंडो' के सापेक्ष परिभाषित किया गया है, जो स्क्रीन से बड़ा है। यह एक कैश्ड दृश्य की तरह है जो स्क्रीन की तुलना में बहुत छोटा है। इसीलिए लेयर पॉइंट कोऑर्डिनेट में बदलाव होता है, लेकिन अक्सर नहीं, और केवल तभी जब 'विंडो' चलती है। कंटेनर बिंदु निर्देशांक हमेशा दृश्यमान दृश्य के सापेक्ष निर्देशांक तक ही सीमित लगते हैं। यह सब कहने के बाद, यह स्पष्ट है कि मैं आपसे अधिक किसी को नहीं जानता, इसलिए यह बहुत अच्छा होगा यदि एक कैट देव। में चिप सकता है!
एलेक्स लीथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.