Обзор 2D-плиток

Разработчики Европейской экономической зоны (ЕЭЗ)

Пример дорожной карты Фрагменты карты — это простое разделение мира на индексированную сетку. Это позволяет эффективно и динамично получать доступ к картографическим данным и использовать их в различных масштабах. API фрагментов карты предоставляет доступ к различным тематическим наборам геоданных, включая наборы, разработанные Google:

  • Фрагменты изображений дорожной карты на основе векторных топографических данных с картографическим стилем Google.

  • Ортофотосъемка, выполненная с помощью спутниковых и воздушных камер, которые предоставляют изображения Земли сверху вниз (из надира).

  • Контурные карты отмывки рельефа.

Все фрагменты 2D-карты имеют географическую привязку и выровнены относительно друг друга. Они выбираются с учётом географического положения области просмотра и уровня масштабирования. Уровень масштабирования варьируется от нуля (для просмотра всего мира) до 22 (для просмотра улиц и кварталов).

Темы карт

Вы можете получить фрагменты карт для следующих тем.

Тема карты Описание
Дорожная карта Дороги, здания, достопримечательности и политические границы
Спутник Фотоснимки, сделанные из космоса
Местность Контурная карта, на которой показаны природные особенности, такие как растительность

Чтобы запросить фрагменты карты из API Map Tiles, необходимо сначала запросить токен сеанса . Токен сеанса отслеживает текущее состояние карты и области просмотра. При настройке токена сеанса необходимо задать значение mapType , соответствующее выбранной теме карты. Затем необходимо включать токен сеанса в каждый запрос к API Map Tiles.

Запросы информации о области просмотра

Область просмотра определяет размер рамки, обрамляющей сцену мира. Запросы информации об области просмотра возвращают сведения о фрагментах карты, составляющих текущую область просмотра. Запрос информации об области просмотра необходим для того, чтобы избежать запроса изображений с несуществующими уровнями масштабирования.

Например, для большинства городов доступны изображения с уровнем масштабирования 22, чего нельзя сказать об океане, поскольку в этом случае на снимках будут отображаться лишь безликие синие квадраты.

Запрос области просмотра представляет собой 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). Все параметры обязательны для заполнения.

Ответы информации о просмотре

Ответ с информацией об области просмотра содержит информацию о том, какие области имеют изображения и на каких уровнях масштабирования. Ответ с информацией об области просмотра имеет следующий вид.

{
  "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
Содержит массив ограничивающих прямоугольников, перекрывающих текущую область просмотра. Также содержит максимальный доступный уровень масштабирования для каждого прямоугольника.

Функции координат плитки

В большинстве языков программирования доступны инструменты (простые функции) для преобразования пар широта/долгота в координаты тайла при определённом уровне масштабирования. Рассмотрим следующий пример кода 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
  };
}