نمای کلی کاشی های دو بعدی

نمونه نقشه راه کاشی های نقشه به سادگی تقسیم جهان به یک شبکه نمایه شده است. این به شما امکان می دهد به داده های نقشه به طور موثر و پویا در مقیاس های نقشه برداری متعدد دسترسی داشته باشید و از آنها استفاده کنید. Map Tiles API به شما امکان دسترسی به چندین مجموعه جغرافیایی موضوعی، از جمله تحت نظارت Google را می دهد:

  • کاشی‌های تصویر نقشه راه بر اساس داده‌های توپوگرافی برداری با استایل نقشه‌برداری Google.

  • عکاسی ارتوپدی گرفته شده توسط دوربین های ماهواره ای و هوایی که تصاویری از بالا به پایین (نادیر) از زمین ارائه می دهند.

  • نقشه های کانتور شید.

کاشی‌های نقشه دوبعدی همگی دارای ارجاع جغرافیایی و تراز با یکدیگر هستند. آنها بر اساس وسعت جغرافیایی نمای و سطح زوم انتخاب می شوند. سطوح زوم از صفر (برای مشاهده جهان به طور کامل) تا 22 (برای مشاهده خیابان ها و بلوک ها) متغیر است.

تم های نقشه

می توانید کاشی های نقشه را برای مضامین نقشه زیر دریافت کنید.

تم نقشه توضیحات
نقشه راه جاده ها، ساختمان ها، نقاط دیدنی و مرزهای سیاسی
ماهواره تصاویر عکاسی گرفته شده از فضا
زمین نقشه کانتور که ویژگی های طبیعی مانند پوشش گیاهی را نشان می دهد

برای درخواست کاشی های نقشه از Map Tiles API، ابتدا باید یک نشانه جلسه درخواست کنید. نشانه جلسه وضعیت فعلی نقشه و نمای شما را ردیابی می کند. هنگامی که نشانه جلسه خود را تنظیم می کنید، باید مقدار mapType را برای مطابقت با موضوع نقشه که می خواهید تنظیم کنید. سپس، شما باید نشانه جلسه را در هر یک از درخواست های خود برای Map Tiles API قرار دهید.

درخواست اطلاعات درگاه مشاهده

درگاه نمایش، اندازه کادری را که صحنه جهان را قاب می کند، مشخص می کند. اطلاعات Viewport جزئیات مربوط به کاشی های نقشه را که نمایپورت فعلی شما را تشکیل می دهند، درخواست می کند. دلیل درخواست اطلاعات ویوپورت این است که از درخواست تصاویر در سطوح بزرگنمایی که وجود ندارند اجتناب کنید.

به عنوان مثال، بیشتر شهرها دارای تصاویر در سطح زوم 22 هستند، اما اقیانوس نه، زیرا در نهایت مربع های آبی بی خاصیت نمایش داده می شود.

درخواست 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
دورترین نقاط شمالی، جنوبی، شرقی و غربی در نما که بر حسب درجه بیان می شود. شمال و جنوب باید در محدوده (90،90-)، شرق و غرب در محدوده (180-، 180-) باشند. برای بیان مرزهای عبور از پادمریدین، غرب می تواند مثبت باشد (مثلاً 170) و شرق می تواند منفی باشد (مثلاً 170-). تمام پارامترها مورد نیاز است.

پاسخ های اطلاعات پورت نمایش

پاسخ Viewport به شما می گوید که کدام مناطق دارای تصویر هستند و در کدام سطح زوم هستند. پاسخ اطلاعات viewport به شکل زیر است.

{
  "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
  };
}