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

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

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

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

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

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

मैप की थीम

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

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

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