Общие сведения

API доступа к тайлам — это HTTP API, который позволяет получать растровые изображения подложки Яндекс Карт.

За один запрос API возвращает изображение одного тайла. Тайлы – это участки размером 256x256 пикселей, на которые разрезано изображение карты (см. рисунок ниже). Каждый тайл представляет собой отдельный PNG-файл. Для формирования полного изображения карты нужно отправить запросы за теми тайлами, которые должны попадать в область видимости.

Ограничения

Обратите внимание на следующие ограничения:

  • Количество запросов в секунду (RPS): до 100.
  • API позволяет получать тайлы только для карты с типом «схема». Тайлы для типов «спутник» и «гибрид» недоступны.
  • API не предоставляет возможность добавлять на карту какие-либо объекты (метки, линии, элементы управления). При необходимости эти объекты можно нарисовать поверх карты самостоятельно.

Что такое тайлы

На Яндекс серверах изображение карты хранится не целиком, а в «разрезанном виде».

Карта разрезается на тайлы – участки размером 256x256 пикселей. Каждый тайл хранится в отдельном PNG-файле. Это позволяет приложениям экономить трафик при загрузке карты: можно подгружать не всю карту сразу, а только те тайлы, которые нужно показать в данный момент.

Каждый тайл имеет порядковый номер [x, y], где x – номер тайла по оси X, y – по оси Y. Нумерация тайлов начинается от левого верхнего угла карты мира и продолжается вправо вниз. Отсчет начинается с нуля.

Тайлы создаются отдельно для каждого уровня масштабирования карты. На наименьшем уровне (zoom=0) вся территория покрывается одним тайлом (см. рисунок ниже). На следующем уровне (zoom=1) вся карта умещается на четырех тайлах. При zoom=2 карту покрывает сетка из 16 тайлов, и так далее. Таким образом, на каждом шаге масштабирования карта разбита на 4z тайлов, где z — уровень масштабирования.

Примечание

Подробнее о тайлах см. в разделе Теоретические сведения документации JavaScript API Карт.

Чтобы получить изображение нужного тайла, необходимо:

  1. Вычислить номер тайла.
  2. Отправить GET-запрос к API, указав в параметрах номера тайлов.

Как вычислить номер тайла

Чтобы вычислить номер нужного тайла, необходимо выполнить следующие шаги:

  1. Определить географические координаты объекта, который должен попадать в тайл (в градусах).

  2. Перевести географические координаты объекта в глобальные пиксельные координаты .

    Формулы для расчета глобальных пиксельных координат

    Введем обозначения:

    • lat, lon – широта и долгота в градусах;
    • z – уровень масштабирования карты;
    • ε – эксцентриситет земного эллипсоида. Если тайлы нужно получить для эллиптической проекции Меркатора, то ε=0.0818191908426. Если для сферической проекции, то ε=0. По умолчанию в Яндекс.Картах используется эллиптическая проекция Меркатора.

    Тогда глобальные пиксельные координаты [xp, yp] для заданного уровня масштабирования z можно вычислить по формулам:

    где:

  3. Разделить глобальные пиксельные координаты на 256 и округлить результат до целого в меньшую сторону. Полученные значения и будут номером тайла.

Реализация вычислений на языке JavaScript

При работе с API необходимо соблюдать условие: на карте должен присутствовать логотип Яндекса.

Логотип Яндекса необходимо добавить поверх карты самостоятельно. Ниже приведены основные требования к использованию логотипа.

1. Размещение

Размещение логотипа возможно только в углу карты. Допускается любой из четырех углов:

2. Отступы от границ карты

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

3. Язык

Допускается использование логотипа на двух языках — русском и английском.

4. Кликабельность

Логотип должен быть гиперссылкой на главную страницу сайта Яндекс Карт.

Следующая