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
इसमें एक एट्रिब्यूशन स्ट्रिंग होती है, जिसे रोडमैप और सैटलाइट टाइल दिखाते समय आपको मैप पर दिखाना होता है. ज़्यादा जानकारी के लिए, 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
  };
}