2D টাইল এক নজরে

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

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

  • Google-এর কার্টোগ্রাফিক স্টাইলিং সহ ভেক্টর টোপোগ্রাফিক ডেটার উপর ভিত্তি করে রোডম্যাপ ইমেজ টাইল।

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

  • হিলশেড কনট্যুর ম্যাপ।

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

ম্যাপ থিম

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

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

Map Tiles API থেকে ম্যাপ টাইলসের অনুরোধ করতে, আপনাকে প্রথমে একটি সেশন টোকেন-এর অনুরোধ করতে হবে। সেশন টোকেন আপনার ম্যাপ ও ভিউপোর্টের বর্তমান অবস্থা ট্র্যাক করে। আপনার সেশন টোকেন সেট-আপ করার সময়, আপনি যে ম্যাপ থিম চান তার সাথে ম্যাচ করার জন্য আপনাকে অবশ্যই mapType ভ্যালু সেট করতে হবে। তারপর, Map Tiles API-তে আপনার প্রতিটি অনুরোধে সেশন টোকেন অন্তর্ভুক্ত করতে হবে।

ভিউপোর্ট সংক্রান্ত তথ্যের অনুরোধ

ভিউপোর্ট, বক্সের সাইজ নির্ধারণ করে যা পৃথিবীর দৃশ্যকে ফ্রেম করে। Viewport তথ্য সংক্রান্ত অনুরোধ আপনার বর্তমান ভিউপোর্ট তৈরি করে এমন ম্যাপ টাইল সম্পর্কে বিবরণ প্রদান করে। আপনি ভিউপোর্ট সংক্রান্ত তথ্য পাওয়ার অনুরোধ করেন যাতে আপনি এমন জুম লেভেলে ছবি পাওয়ার অনুরোধ না করেন যা উপলভ্য নেই।

যেমন, বেশিরভাগ শহরের ক্ষেত্রে ২২ জুম লেভেলে ছবি থাকে, কিন্তু সমুদ্রের ক্ষেত্রে থাকে না, কারণ সেক্ষেত্রে শুধু বৈশিষ্ট্যহীন নীল রঙের বর্গক্ষেত্র দেখা যাবে।

ভিউ পোর্ট অনুরোধ হল নিম্নলিখিত ফর্মের একটি 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
এতে একটি অ্যাট্রিবিউশন স্ট্রিং থাকে যা আপনাকে অবশ্যই আপনার ম্যাপে দেখাতে হবে যখন আপনি রোডম্যাপ এবং স্যাটেলাইট টাইলস দেখান। আরও তথ্যের জন্য, Map Tiles 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
  };
}