Maps JavaScript API, इन निर्देशांक सिस्टम का इस्तेमाल करता है:
- अक्षांश और देशांतर की वैल्यू, जो दुनिया के किसी बिंदु को यूनीक तरीके से रेफ़र करती हैं. (Google, वर्ल्ड जियोडेटिक सिस्टम WGS84 स्टैंडर्ड का इस्तेमाल करता है.)
- दुनिया के निर्देशांक, जो मैप पर किसी पॉइंट को खास तौर पर रेफ़र करते हैं.
- पिक्सल के निर्देशांक, जो मैप पर किसी खास पिक्सल का रेफ़रंस देते हैं.
- टाइल के निर्देशांक, जो मैप पर किसी खास ज़ूम लेवल पर मौजूद किसी खास टाइल का रेफ़रंस देते हैं.
दुनिया के कोऑर्डिनेट
जब भी एपीआई को दुनिया की किसी जगह को मैप पर मौजूद किसी जगह में बदलना होता है, तो वह पहले अक्षांश और देशांतर की वैल्यू को world निर्देशांक में बदलता है. एपीआई, इस बदलाव को लागू करने के लिए, Mercator प्रोजेक्शन का इस्तेमाल करता है.
पिक्सल निर्देशांक की गिनती आसानी से करने के लिए (नीचे देखें), हम मानते हैं कि ज़ूम लेवल 0 पर मौजूद मैप, बुनियादी टाइल साइज़ की एक टाइल है. इसके बाद, हम ज़ूम लेवल 0 पर पिक्सल निर्देशांक के हिसाब से दुनिया के निर्देशांक तय करते हैं. इसके लिए, हम इस बेस टाइल पर अक्षांश और देशांतर को पिक्सल पोज़िशन में बदलने के लिए प्रोजेक्शन का इस्तेमाल करते हैं. यह वर्ल्ड निर्देशांक एक फ़्लोटिंग पॉइंट वैल्यू है, जिसे मैप प्रोजेक्शन की शुरुआत से किसी खास जगह तक मापा जाता है. ध्यान दें कि यह वैल्यू, फ़्लोटिंग पॉइंट वैल्यू होती है. इसलिए, यह दिख रही मैप इमेज के मौजूदा रिज़ॉल्यूशन से ज़्यादा सटीक हो सकती है. दूसरे शब्दों में, दुनिया का कोई निर्देशांक, मौजूदा ज़ूम लेवल से अलग होता है.
Google Maps में दुनिया के निर्देशांक, मेर्काटोर प्रोजेक्शन के ऑरिजिन (मैप के उत्तर-पश्चिम कोने में 180 डिग्री देशांतर और करीब 85 डिग्री अक्षांश) से मेज़र किए जाते हैं. साथ ही, x
दिशा में पूर्व (दाईं ओर) और y
दिशा में दक्षिण (नीचे) की ओर बढ़ते हैं. Mercator 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) से भाग देने और नतीजे के पूर्णांक हिस्सों को लेने पर, आपको मौजूदा ज़ूम लेवल पर टाइल निर्देशांक के तौर पर एक बाई-प्रॉडक्ट मिलता है.
उदाहरण
नीचे दिए गए उदाहरण में, शिकागो, इलिनोइस के लिए कोऑर्डिनेट दिखाए गए हैं: अक्षांश/देशांतर की वैल्यू, दुनिया के कोऑर्डिनेट, पिक्सल कोऑर्डिनेट, और टाइल के कोऑर्डिनेट. अलग-अलग ज़ूम लेवल पर निर्देशांक की वैल्यू देखने के लिए, ज़ूम कंट्रोल का इस्तेमाल करें.
यह देखने के लिए कि निर्देशांकों की गणना कैसे की गई है, कोड देखें.