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

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

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

  • धरती की ऊपरी (नीचे) की ओर से ली गई तस्वीरों को सैटलाइट और हवाई जहाज़ में लगे कैमरे, दोनों से कैप्चर किया गया.

  • हिलशेड कंटूर मैप.

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

मैप थीम

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

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

Map Tiles API से मैप टाइल का अनुरोध करने के लिए, आपको पहले सेशन टोकन का अनुरोध करना होगा. सत्र टोकन आपके मैप और व्यूपोर्ट की मौजूदा स्थिति को ट्रैक करता है. सेशन टोकन सेट अप करते समय, आपको अपनी पसंद की मैप थीम से मैच करने के लिए mapType वैल्यू सेट करनी होगी. इसके बाद, आपको 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
इसमें एक एट्रिब्यूशन स्ट्रिंग होती है जिसे आपको मैप पर, रोडमैप और सैटलाइट टाइल दिखाते समय दिखाना होगा. ज़्यादा जानकारी के लिए, मैप टाइल एपीआई की नीतियां देखें.
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
  };
}