2D টাইলস ওভারভিউ

ইউরোপীয় অর্থনৈতিক অঞ্চল (EEA) ডেভেলপাররা

রোডম্যাপের উদাহরণ ম্যাপ টাইলস হল কেবল বিশ্বকে একটি সূচীকৃত গ্রিডে বিভক্ত করা। এটি আপনাকে একাধিক কার্টোগ্রাফিক স্কেলে দক্ষতার সাথে এবং গতিশীলভাবে মানচিত্রের ডেটা অ্যাক্সেস এবং ব্যবহার করতে দেয়। ম্যাপ টাইলস API আপনাকে একাধিক থিম্যাটিক জিওডেটাসেট অ্যাক্সেস দেয়, যার মধ্যে রয়েছে গুগল-কিউরেটেড:

  • গুগলের কার্টোগ্রাফিক স্টাইলিং সহ ভেক্টর টপোগ্রাফিক ডেটার উপর ভিত্তি করে রোডম্যাপ ছবির টাইলস।

  • স্যাটেলাইট এবং বায়ুবাহিত ক্যামেরা উভয় দ্বারা ধারণ করা অর্থোফটোগ্রাফি যা পৃথিবীর উপর থেকে নীচের (নাদির) চিত্র প্রদান করে।

  • পাহাড়ের ছায়ার কনট্যুর মানচিত্র।

2D ম্যাপ টাইলসগুলি সমস্ত জিওরেফারেন্সযুক্ত এবং একে অপরের সাথে সারিবদ্ধ। ভিউপোর্টের ভৌগোলিক সীমা এবং জুম স্তরের উপর ভিত্তি করে এগুলি নির্বাচন করা হয়। জুম স্তরগুলি শূন্য (সম্পূর্ণ বিশ্ব দেখার জন্য) থেকে 22 (রাস্তা এবং ব্লক দেখার জন্য) পর্যন্ত।

মানচিত্রের থিম

আপনি নিম্নলিখিত মানচিত্র থিমগুলির জন্য মানচিত্র টাইলস পেতে পারেন।

মানচিত্রের থিম বিবরণ
রোডম্যাপ রাস্তাঘাট, ভবন, আকর্ষণীয় স্থান এবং রাজনৈতিক সীমানা
উপগ্রহ মহাকাশ থেকে তোলা আলোকচিত্র
ভূখণ্ড একটি কনট্যুর মানচিত্র যা উদ্ভিদের মতো প্রাকৃতিক বৈশিষ্ট্যগুলি দেখায়

Map Tiles API থেকে map টাইলস অনুরোধ করতে, আপনাকে প্রথমে একটি session token অনুরোধ করতে হবে। session টোকেন আপনার map এবং viewport এর বর্তমান অবস্থা ট্র্যাক করে। যখন আপনি আপনার session টোকেন সেট আপ করেন, তখন আপনাকে mapType মানটি আপনার পছন্দের map থিমটির সাথে মেলে সেট করতে হবে। তারপর, Map Tiles API-তে আপনার প্রতিটি অনুরোধে session টোকেন অন্তর্ভুক্ত করতে হবে।

ভিউপোর্ট তথ্য অনুরোধ

ভিউপোর্টটি বিশ্ব দৃশ্যকে ফ্রেম করে এমন বাক্সের আকার নির্ধারণ করে। ভিউপোর্ট তথ্য অনুরোধগুলি আপনার বর্তমান ভিউপোর্ট তৈরি করে এমন ম্যাপ টাইলগুলির বিশদ বিবরণ ফেরত দেয়। আপনি ভিউপোর্ট তথ্য অনুরোধ করার কারণ হল নিশ্চিত করা যে আপনি জুম স্তরে চিত্রের অনুরোধ এড়াতে পারেন যা বিদ্যমান নেই।

উদাহরণস্বরূপ, বেশিরভাগ শহরের জুম লেভেল ২২-এ ছবি থাকে, কিন্তু সমুদ্রের নয় কারণ এটি শেষ পর্যন্ত বৈশিষ্ট্যহীন নীল বর্গক্ষেত্র প্রদর্শন করবে।

ভিউপোর্ট অনুরোধটি নিম্নলিখিত ফর্মের একটি HTTPS GET অনুরোধ।

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
ভিউপোর্টের সবচেয়ে দূরবর্তী উত্তর, দক্ষিণ, পূর্ব এবং পশ্চিম বিন্দুগুলি, ডিগ্রীতে প্রকাশ করা হয়েছে। উত্তর এবং দক্ষিণ অবশ্যই (-৯০,৯০) পরিসরে থাকতে হবে, পূর্ব এবং পশ্চিম অবশ্যই (-১৮০, ১৮০) পরিসরে থাকতে হবে। অ্যান্টিমেরিডিয়ান অতিক্রম করে সীমা প্রকাশ করতে, পশ্চিম ধনাত্মক হতে পারে (উদাহরণস্বরূপ, ১৭০) এবং পূর্ব ঋনাত্মক হতে পারে (উদাহরণস্বরূপ, -১৭০)। সমস্ত পরামিতি প্রয়োজন।

ভিউপোর্ট তথ্য প্রতিক্রিয়া

ভিউপোর্ট রেসপন্স আপনাকে বলে দেয় কোন কোন এলাকায় চিত্রাবলী আছে এবং কোন জুম লেভেলে আছে। একটি ভিউপোর্ট তথ্য রেসপন্সের নিম্নলিখিত ফর্ম থাকে।

{
  "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
রোডম্যাপ এবং স্যাটেলাইট টাইলস প্রদর্শনের সময় আপনার মানচিত্রে একটি অ্যাট্রিবিউশন স্ট্রিং প্রদর্শন করতে হবে। আরও তথ্যের জন্য, ম্যাপ টাইলস API নীতিগুলি দেখুন।
maxZoomRect
বর্তমান ভিউপোর্টের সাথে ওভারল্যাপ করে এমন বাউন্ডিং আয়তক্ষেত্রের একটি অ্যারে রয়েছে। প্রতিটি আয়তক্ষেত্রের মধ্যে উপলব্ধ সর্বোচ্চ জুম স্তরও রয়েছে।

টাইল স্থানাঙ্ক ফাংশন

বেশিরভাগ প্রোগ্রামিং ভাষায় একটি নির্দিষ্ট জুম স্তরে অক্ষাংশ/দ্রাঘিমাংশ জোড়া থেকে টাইল স্থানাঙ্কে রূপান্তর করার জন্য টুল (সহজ ফাংশন) পাওয়া যায়। নিম্নলিখিত জাভাস্ক্রিপ্ট কোড উদাহরণটি বিবেচনা করুন যা প্রথমে একটি 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
  };
}