Maps JavaScript API, इन निर्देशांक सिस्टम का इस्तेमाल करता है:
- अक्षांश और देशांतर की वैल्यू, जो दुनिया के किसी बिंदु को यूनीक तरीके से रेफ़र करती हैं. (Google, वर्ल्ड जियोडेटिक सिस्टम WGS84 स्टैंडर्ड का इस्तेमाल करता है.)
- दुनिया के निर्देशांक, जो मैप पर किसी पॉइंट को खास तौर पर रेफ़र करते हैं.
- पिक्सल के निर्देशांक, जो मैप पर किसी खास पिक्सल का रेफ़रंस देते हैं. ये निर्देशांक, मैप के किसी खास ज़ूम लेवल पर दिखते हैं.
- टाइल के निर्देशांक, जो मैप पर किसी खास ज़ूम लेवल पर मौजूद किसी खास टाइल का रेफ़रंस देते हैं.
दुनिया के कोऑर्डिनेट
जब भी एपीआई को दुनिया की किसी जगह को मैप पर मौजूद किसी जगह में बदलना होता है, तो वह पहले अक्षांश और देशांतर की वैल्यू को world निर्देशांक में बदलता है. एपीआई, इस बदलाव को लागू करने के लिए, Mercator प्रोजेक्शन का इस्तेमाल करता है.
पिक्सल निर्देशांक की गिनती आसानी से करने के लिए (नीचे देखें), हम मानते हैं कि ज़ूम लेवल 0 पर मौजूद मैप, बुनियादी टाइल साइज़ की एक टाइल है. इसके बाद, हम ज़ूम लेवल 0 पर पिक्सल निर्देशांक के हिसाब से दुनिया के निर्देशांक तय करते हैं. इसके लिए, हम इस बेस टाइल पर अक्षांश और देशांतर को पिक्सल पोज़िशन में बदलने के लिए प्रोजेक्शन का इस्तेमाल करते हैं. यह वर्ल्ड कोऑर्डिनेट, फ़्लोटिंग पॉइंट की वैल्यू होती है. इसे मैप प्रोजेक्शन के ऑरिजिन से किसी खास जगह तक मापा जाता है. ध्यान दें कि यह वैल्यू, फ़्लोटिंग पॉइंट वैल्यू होती है. इसलिए, यह दिख रही मैप इमेज के मौजूदा रिज़ॉल्यूशन से ज़्यादा सटीक हो सकती है. दूसरे शब्दों में, दुनिया का कोई निर्देशांक, मौजूदा ज़ूम लेवल से अलग होता है.
Google Maps में दुनिया के निर्देशांक, मेर्काटोर प्रोजेक्शन के ऑरिजिन (मैप के उत्तर-पश्चिम कोने में 180 डिग्री देशांतर और करीब 85 डिग्री अक्षांश) से मेज़र किए जाते हैं. साथ ही, x
दिशा में पूर्व (दाईं ओर) और y
दिशा में दक्षिण (नीचे) की ओर बढ़ते हैं. Google Maps की बुनियादी मेर्काटोर टाइल 256 x 256 पिक्सल की होती है. इसलिए, दुनिया के कोऑर्डिनेट के लिए इस्तेमाल किया जा सकने वाला स्पेस {0-256}, {0-256}
होता है.
ध्यान दें कि मेकर्टर प्रोजेक्शन में, लंबाई के हिसाब से चौड़ाई सीमित होती है, लेकिन अक्षांश के हिसाब से ऊंचाई अनलिमिटेड होती है. हम मेर्काटोर प्रोजेक्शन का इस्तेमाल करके, बुनियादी मैप की इमेज को काटते हैं. ऐसा, मैप को स्क्वेयर आकार देने के लिए, +/- 85 डिग्री पर किया जाता है. इससे टाइल चुनने के लिए आसान लॉजिक मिलता है. ध्यान दें कि अगर आपने ध्रुवों के बहुत करीब प्लॉट किया है, तो प्रोजेक्शन से दुनिया के ऐसे निर्देशांक मिल सकते हैं जो बेस मैप के इस्तेमाल किए जा सकने वाले निर्देशांक स्पेस के बाहर हों.
पिक्सल कोऑर्डिनेट
पिक्सल निर्देशांक, मैप पर किसी खास पिक्सल का रेफ़रंस देते हैं. ऐसा किसी खास ज़ूम लेवल पर किया जाता है. वहीं, दुनिया के निर्देशांक, किसी दिए गए प्रोजेक्शन पर जगह की सटीक जानकारी दिखाते हैं. पिक्सल के निर्देशांक का हिसाब, इस फ़ॉर्मूला का इस्तेमाल करके लगाया जाता है:
pixelCoordinate = worldCoordinate * 2zoomLevel
ऊपर दिए गए समीकरण से पता चलता है कि ज़ूम लेवल बढ़ने पर, x
और y
, दोनों दिशाओं में ज़ूम लेवल दोगुना हो जाता है. इसलिए, ज़ूम करने के हर लेवल पर, रिज़ॉल्यूशन पिछले लेवल से चार गुना ज़्यादा हो जाता है. उदाहरण के लिए, ज़ूम लेवल 1 पर,
मैप में 256x256 पिक्सल वाली चार टाइल होती हैं. इससे, पिक्सल स्पेस 512x512 हो जाता है. ज़ूम लेवल 19 पर, मैप पर मौजूद हर x
और y
पिक्सल का रेफ़रंस, 0 से 256 * 219 के बीच की वैल्यू का इस्तेमाल करके दिया जा सकता है.
हमने दुनिया के निर्देशांक, मैप के टाइल साइज़ के आधार पर तय किए हैं. इसलिए, पिक्सल निर्देशांक के पूर्णांक वाले हिस्से से, मौजूदा ज़ूम लेवल में उस जगह के सटीक पिक्सल की पहचान की जा सकती है. ध्यान दें कि ज़ूम लेवल 0 के लिए, पिक्सल निर्देशांक, वर्ल्ड निर्देशांक के बराबर होते हैं.
अब हमारे पास मैप पर हर जगह की जानकारी को सटीक तरीके से दिखाने का तरीका है. ऐसा, ज़ूम के हर लेवल पर किया जा सकता है. Maps JavaScript API, मैप के ज़ूम लेवल के केंद्र (LatLng
के तौर पर) और उसमें मौजूद डोम एलिमेंट के साइज़ के आधार पर व्यूपोर्ट बनाता है. साथ ही, इस बाउंडिंग बॉक्स को पिक्सल निर्देशांक में बदलता है. इसके बाद, एपीआई तय करता है कि दिए गए पिक्सल के दायरे में कौनसी मैप टाइल मौजूद हैं. इनमें से हर मैप टाइल का रेफ़रंस,
टाइल निर्देशांक का इस्तेमाल करके दिया जाता है. इससे मैप की इमेज को दिखाना काफ़ी आसान हो जाता है.
टाइल कोऑर्डिनेट
ज़ूम लेवल बढ़ाने पर, एपीआई एक साथ सभी मैप इमेज लोड नहीं कर सकता. इसके बजाय, एपीआई हर ज़ूम लेवल पर इमेज को मैप टाइल के सेट में बांट देता है. इन्हें लॉजिक के हिसाब से, ऐप्लिकेशन के समझने लायक क्रम में व्यवस्थित किया जाता है. जब कोई मैप किसी नई जगह पर स्क्रोल करता है या किसी नए ज़ूम लेवल पर जाता है, तो एपीआई यह तय करता है कि पिक्सल निर्देशांक का इस्तेमाल करके, किन टाइल की ज़रूरत है. साथ ही, उन वैल्यू को टाइल के सेट में बदलकर, उन्हें वापस लाता है. टाइल के इन निर्देशांकों को एक स्कीम का इस्तेमाल करके असाइन किया जाता है. इससे यह तय करना आसान हो जाता है कि किसी भी पॉइंट की इमेज किस टाइल में मौजूद है.
Google Maps में टाइल की संख्या, पिक्सल की संख्या के हिसाब से होती है. Google के मेरिकैटर प्रोजेक्शन को लागू करने के लिए, ऑरिजिन टाइल हमेशा मैप के उत्तर-पश्चिम कोने में होती है. साथ ही, x
वैल्यू पश्चिम से पूर्व की ओर बढ़ती हैं और y
वैल्यू उत्तर से दक्षिण की ओर बढ़ती हैं. टाइल को उस ऑरिजिन के x,y
निर्देशांक का इस्तेमाल करके इंडेक्स किया जाता है. उदाहरण के लिए, ज़ूम लेवल 2 पर, जब पृथ्वी को 16 टाइल में बांटा जाता है, तो हर टाइल का रेफ़रंस, यूनीक x,y
पेयर से दिया जा सकता है:
ध्यान दें कि पिक्सल निर्देशांक को टाइल साइज़ (256) से भाग देने और नतीजे के पूर्णांक हिस्से को लेने पर, आपको मौजूदा ज़ूम लेवल पर टाइल निर्देशांक के तौर पर एक बाई-प्रॉडक्ट मिलता है.
उदाहरण
यहां शिकागो, इलिनोइस के निर्देशांक दिए गए हैं: अक्षांश/देशांतर की वैल्यू, दुनिया के निर्देशांक, पिक्सल निर्देशांक, और टाइल के निर्देशांक. अलग-अलग ज़ूम लेवल पर निर्देशांक की वैल्यू देखने के लिए, ज़ूम कंट्रोल का इस्तेमाल करें.
निर्देशांक का हिसाब कैसे लगाया गया, यह देखने के लिए, कोड देखें.