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

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

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

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

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

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

Темы карт

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

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

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

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

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

Например, большинство городов имеют изображения с уровнем масштабирования 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 Map Tiles .
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
  };
}