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

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

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

  • सैटलाइट और एयरबोन दोनों कैमरों से कैप्चर की गई ऑर्थोफ़ोटोग्राफ़ी पृथ्वी की ऊपर से नीचे (नीचे) की तस्वीरें.

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

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

मैप थीम

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

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

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

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

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

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