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

توسعه‌دهندگان منطقه اقتصادی اروپا (EEA)

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

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

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

  • نقشه‌های پَربند سایه‌روشن تپه.

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

طرح‌های زمینه نقشه

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

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

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

درخواست‌های اطلاعات ناحیه نمایش

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

برای مثال، اکثر شهرها در سطح بزرگ‌نمایی ۲۲ دارای تصویر هستند، اما اقیانوس‌ها این‌طور نیستند زیرا درنهایت فقط مربع‌های آبی بدون ویژگی نمایش داده می‌شوند.

درخواست نمای هدف یک درخواست 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
  };
}