पृथ्वी पर गणना (Spherical)
दूरी, दिशा, क्षेत्रफल और इंटरपोलेशन जैसी भौगोलिक गणनाएं, 3 प्लेटफार्मों पर समान नाम और समान परिणामों के साथ प्रदान की जाती हैं। मानचित्र SDK द्वारा प्रदान की जाने वाली उपयोगिताओं पर निर्भर नहीं होने के कारण, प्रदाता बदलने पर भी मान नहीं बदलते हैं। SDK के आंतरिक टैप निर्धारण और ग्रेट सर्कल मार्ग चित्रण भी, सभी इस गणना का उपयोग करते हैं।
01 · बुनियादी गणना
अक्सर उपयोग किए जाने वाले फ़ंक्शन `Spherical` में संग्रहित हैं। दूरी मीटर में, दिशा वास्तविक उत्तर को 0 मानकर डिग्री में, और क्षेत्रफल वर्ग मीटर में लौटता है। तर्क स्वयं निर्देशांक होते हैं, और यह प्रक्षेपण या ज़ूम पर निर्भर नहीं करता है।
val meters = Spherical.computeDistanceBetween(from, to)
val heading = Spherical.computeHeading(from, to)
// वृत्त के किनारे के मार्कर आठ दिशाओं में रखें
val ring = (0 until 8).map { i ->
Spherical.computeOffset(center, 3_000.0, i * 45.0)
}
val routeMeters = Spherical.computeLength(routePoints)
val areaSqMeters = Spherical.computeArea(polygonPoints)let meters = Spherical.computeDistanceBetween(from: from, to: to)
let heading = Spherical.computeHeading(from: from, to: to)
let ring = (0..<8).map { i in
Spherical.computeOffset(origin: center, distance: 3_000.0, heading: Double(i) * 45.0)
}
let routeMeters = Spherical.computeLength(routePoints)import { computeDistanceBetween, computeOffset, computeLength } from '@mapconductor/js-sdk-core';
const meters = computeDistanceBetween(from, to);
// केंद्र से 3 km दूर, हर 45 डिग्री पर एक वलय
const ring = Array.from({ length: 8 }, (_, i) =>
computeOffset({ origin: center, distance: 3000, heading: i * 45 }));
const routeMeters = computeLength(routePoints);02 · गोलाकार मॉडल और दीर्घवृत्ताकार मॉडल
भौगोलिक गणना के लिए दो सटीकता स्तर तैयार हैं। पृथ्वी को एक वास्तविक गोले के रूप में मानने वाला गोलाकार मॉडल, और WGS84 दीर्घवृत्त के रूप में मानने वाला जियोडेसिक मॉडल है। इन्हें उपयोग के अनुसार अलग-अलग तरीकों से उपयोग किया जाता है।
स्थिरांक दोनों WGS84 पर आधारित हैं (भूमध्य रेखा त्रिज्या 6,378,137 मीटर, चपटापन 1/298.257223563)। 3 प्लेटफार्मों पर समान स्थिरांक और समान सूत्रों का उपयोग करने के कारण, समान इनपुट के लिए समान मान लौटता है।
गोलीय मॉडल (पर्याप्त तेज़, पर्याप्त सटीक)
दूरी के लिए हेवरसाइन (haversine), दिशा और इंटरपोलेशन के लिए गोलीय त्रिकोणमिति। लाभ यह है कि सैकड़ों किलोमीटर तक त्रुटि व्यावहारिक रूप से नगण्य है और गणना लागत कम है।
दीर्घवृत्ताभ मॉडल (जियोडेसिक)
WGS84 दीर्घवृत्ताभ पर जियोडेसिक (Vincenty प्रकार का पुनरावर्ती समाधान) का उपयोग करके गणना करता है। विधि संरचना Spherical के समान है, इसलिए गोले के लिए Spherical और WGS84 के लिए WGS84Geodesic को कॉल बदले बिना बदला जा सकता है। क्षेत्रफल दीर्घवृत्ताभ (authalic) से प्राप्त किया जाता है।
अभिसरण न होने पर गोलीय पर वापस गिरना
दीर्घवृत्ताभ पुनरावर्ती समाधान, लगभग विपरीत ध्रुवों वाले दो बिंदुओं आदि पर अभिसरण नहीं कर सकते हैं। उस स्थिति में यह स्वचालित रूप से गोलीय मॉडल के परिणाम पर स्विच हो जाता है, इसलिए 0 या NaN वापस नहीं आएगा। कॉलिंग साइड पर अपवाद हैंडलिंग लिखने की आवश्यकता नहीं है।
03 · स्क्रीन के साथ पुल
मानचित्र पर "एक उंगली" या "16px का मार्जिन" जैसी स्क्रीन-आधारित मात्राओं को भौगोलिक दूरी में बदलने वाले फ़ंक्शन का समूह है। ज़ूम और अक्षांश के अनुसार रूपांतरण शामिल होने के कारण, ज़ूम स्तर या स्थान बदलने पर भी अनुभव नहीं बदलता है।
आकृति · टैप निर्धारण में उपयोग की जाने वाली प्रक्रिया
सेटिंग मान "फिंगर साइज़" (तार्किक इकाइयाँ) को स्क्रीन पिक्सल में बदलता है।
calculateMetersPerPixel से, वर्तमान ज़ूम और अक्षांश पर सहनशील दूरी (मीटर) में बदलता है।
उस सहनशील दूरी का उपयोग करके, पंक्तियों और आकृतियों से दूरी को भौगोलिक निर्देशांक के रूप में निर्धारित करता है।
इस प्रक्रिया के कारण, ज़ूम बदलने पर भी लाइन को दबाने की सुविधा नहीं बदलती है, और किसी भी प्रदाता पर यह समान निर्धारण होता है।
04 · लाइनों और आकृतियों के लिए गणना
पॉलीलाइन और पॉलीगॉन के चित्रण और निर्धारण को, किसी भी प्रदाता पर समान परिणाम देने के लिए फ़ंक्शन का समूह है। SDK के आंतरिक उपयोग में आने वाले वही फ़ंक्शन सार्वजनिक रूप से उपलब्ध हैं।
createInterpolatePoints और pointOnLineOrNull, दोनों WGS84Geodesic और Planar में समान नाम से उपलब्ध हैं। कॉल करने वाला केवल नेमस्पेस बदलकर, भू-ज्यामितीय मॉडल और समतल मॉडल के बीच स्विच कर सकता है।
समान इनपुट के लिए समान परिणाम
Kotlin, Swift और TypeScript कार्यान्वयन समान सूत्रों में लिखे गए हैं और समान स्थिरांक का उपयोग करते हैं। प्लेटफ़ॉर्म के बीच प्रदर्शित दूरी और क्षेत्रफल में अंतर नहीं होगा।
ऐप से भी उपयोग किया जा सकता है
कोर गणना कार्य आंतरिक उपयोग के लिए नहीं बल्कि सार्वजनिक API हैं। मार्ग दूरी प्रदर्शन, त्रिज्या गणना, कस्टम हिट पहचान आदि के लिए ऐप के तर्क में सीधे उपयोग किया जा सकता है। इस पृष्ठ पर सूचीबद्ध सभी कार्य तीनों प्लेटफ़ॉर्म पर उपलब्ध हैं।