2D टाइल की खास जानकारी

यूरोपियन इकनॉमिक एरिया (ईईए) के डेवलपर

रोडमैप का उदाहरणमैप टाइल, दुनिया को इंडेक्स किए गए ग्रिड में बांटने का एक तरीका है. इसकी मदद से, मैप डेटा को कई कार्टोग्राफ़िक स्केल पर, डाइनैमिक तरीके से और बेहतर ढंग से ऐक्सेस और इस्तेमाल किया जा सकता है. Map Tiles API की मदद से, आपको अलग-अलग थीम वाले कई जियोडेटासेट का ऐक्सेस मिलता है. इनमें Google के बनाए गए ये डेटासेट शामिल हैं:

  • Google की कार्टोग्राफ़िक स्टाइलिंग के साथ, वेक्टर टोपोग्राफ़िक डेटा पर आधारित रोडमैप इमेज टाइल.

  • सैटलाइट और एयरबोर्न कैमरों से ली गई ऑर्थोफ़ोटोग्राफ़ी, जो पृथ्वी की टॉप डाउन (नादिर) इमेज दिखाती है.

  • हिलशेड कॉन्टूर मैप.

सभी 2D मैप टाइल, जियोरेफ़रंस की गई होती हैं और एक-दूसरे के साथ अलाइन होती हैं. इन्हें व्यूपोर्ट के भौगोलिक दायरे और ज़ूम करने के लेवल के आधार पर चुना जाता है. ज़ूम करने के लेवल, शून्य (पूरी दुनिया को देखने के लिए) से लेकर 22 (सड़कों और ब्लॉक को देखने के लिए) तक होते हैं.

मैप की थीम

आपको इन मैप थीम के लिए मैप टाइल मिल सकती हैं.

मैप की थीम जानकारी
रोडमैप सड़कें, इमारतें, लोकप्रिय जगहें, और राजनैतिक सीमाएं
सैटलाइट अंतरिक्ष से ली गई फ़ोटो
इलाका एक कंटूर मैप, जिसमें वनस्पति जैसी प्राकृतिक विशेषताएं दिखाई गई हैं

Map Tiles API से मैप टाइल का अनुरोध करने के लिए, आपको पहले सेशन टोकन का अनुरोध करना होगा. सेशन टोकन, आपके मैप और व्यूपोर्ट की मौजूदा स्थिति को ट्रैक करता है. सेशन टोकन सेट अप करते समय, आपको mapType वैल्यू सेट करनी होगी, ताकि वह आपकी पसंद की मैप थीम से मैच हो सके. इसके बाद, आपको Map Tiles API को भेजे जाने वाले हर अनुरोध में सेशन टोकन शामिल करना होगा.

व्यूपोर्ट की जानकारी के अनुरोध

व्यूपोर्ट से उस बॉक्स का साइज़ तय होता है जिसमें दुनिया का सीन फ़्रेम किया जाता है. व्यूपोर्ट की जानकारी के अनुरोधों से, आपके मौजूदा व्यूपोर्ट को बनाने वाली मैप टाइल की जानकारी मिलती है. व्यूपोर्ट की जानकारी का अनुरोध करने की वजह यह है कि आपको ज़ूम करने के ऐसे लेवल पर इमेज का अनुरोध करने से बचना है जो मौजूद नहीं हैं.

उदाहरण के लिए, ज़्यादातर शहरों की इमेज, ज़ूम करने के लेवल 22 पर उपलब्ध होती हैं. हालांकि, महासागर की इमेज इस लेवल पर उपलब्ध नहीं होती हैं, क्योंकि इससे सिर्फ़ नीले रंग के स्क्वेयर दिखेंगे जिनमें कोई जानकारी नहीं होगी.

व्यूपोर्ट का अनुरोध, इस तरह का एचटीटीपीएस जीईटी अनुरोध होता है.

curl "https://tile.googleapis.com/tile/v1/viewport?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&zoom=zoom&north=north&south=south&east=east&west=west"

अनुरोध में ये फ़ील्ड शामिल होते हैं:

zoom
व्यूपोर्ट का ज़ूम करने का लेवल.
north, south, east, west
व्यूपोर्ट में सबसे उत्तर, दक्षिण, पूर्व, और पश्चिम के पॉइंट, जिन्हें डिग्री में दिखाया गया है. उत्तर और दक्षिण की वैल्यू (-90,90) की रेंज में होनी चाहिए. साथ ही, पूर्व और पश्चिम की वैल्यू (-180, 180) की रेंज में होनी चाहिए. एंटीमेरिडियन को पार करने वाली सीमाओं को दिखाने के लिए, पश्चिम की वैल्यू पॉज़िटिव (उदाहरण के लिए, 170) और पूर्व की वैल्यू नेगेटिव (उदाहरण के लिए, -170) हो सकती है. सभी पैरामीटर ज़रूरी हैं.

व्यूपोर्ट की जानकारी से जुड़े जवाब

व्यूपोर्ट रिस्पॉन्स से आपको पता चलता है कि किन इलाकों की इमेज उपलब्ध हैं और उन्हें ज़ूम करने के कौनसे लेवल हैं. व्यूपोर्ट की जानकारी वाले रिस्पॉन्स का फ़ॉर्मैट इस तरह का होता है.

{
  "copyright": "Map data ©2023",
  "maxZoomRects": [
    {
      "maxZoom": 19,
      "north": 90,
      "south": -90,
      "east": 180,
      "west": -180
    },
    {
      "maxZoom": 9,
      "north": 90,
      "south": -90,
      "east": 180,
      "west": -180
    },
    {
      "maxZoom": 14,
      "north": 84.375,
      "south": -84.375,
      "east": 180,
      "west": -180
    }, ...
  ]
}

जवाब के मुख्य हिस्से में ये फ़ील्ड शामिल होते हैं.

copyright
इसमें एक एट्रिब्यूशन स्ट्रिंग होती है, जिसे आपको रोडमैप और सैटलाइट टाइल दिखाते समय अपने मैप पर दिखाना होगा. ज़्यादा जानकारी के लिए, Map Tiles API की नीतियां देखें.
maxZoomRect
इसमें बाउंडिंग रेक्टैंगल का एक कलेक्शन होता है, जो मौजूदा व्यूपोर्ट को ओवरलैप करता है. इसमें हर रेक्टैंगल के लिए, ज़ूम करने का ज़्यादा से ज़्यादा लेवल भी शामिल होता है.

टाइल कोऑर्डिनेट फ़ंक्शन

ज़्यादातर प्रोग्रामिंग भाषाओं में, अक्षांश/देशांतर के पेयर को ज़ूम करने के किसी खास लेवल पर टाइल कोऑर्डिनेट में बदलने के लिए, टूल (सामान्य फ़ंक्शन) उपलब्ध होते हैं. JavaScript कोड का यह उदाहरण देखें. इसमें पहले latLng को पॉइंट में बदला जाता है. इसके बाद, पॉइंट को टाइल कोऑर्डिनेट में बदला जाता है.

var TILE_SIZE = 256;

function fromLatLngToPoint(latLng) {
  var mercator = -Math.log(Math.tan((0.25 + latLng.lat() / 360) * Math.PI));
  return {
    x: TILE_SIZE * (latLng.lng() / 360 + 0.5),
    y: TILE_SIZE / 2 * (1 +  mercator / Math.PI)
  };
}

function fromLatLngToTileCoord(latLng, zoom) {
  var point = fromLatLngToPoint(latLng);
  var scale = Math.pow(2, zoom);

  return {
    x: Math.floor(point.x * scale / TILE_SIZE),
    y: Math.floor(point.y * scale / TILE_SIZE),
    z: zoom
  };
}