Общие сведения
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 Карт.
Чтобы получить изображение нужного тайла, необходимо:
- Вычислить номер тайла.
- Отправить GET-запрос к API, указав в параметрах номера тайлов.
Как вычислить номер тайла
Чтобы вычислить номер нужного тайла, необходимо выполнить следующие шаги:
-
Определить географические координаты объекта, который должен попадать в тайл (в градусах).
-
Перевести географические координаты объекта в глобальные пиксельные координаты .
Формулы для расчета глобальных пиксельных координат
Введем обозначения:
lat
,lon
– широта и долгота в градусах;z
– уровень масштабирования карты;ε
– эксцентриситет земного эллипсоида. Если тайлы нужно получить для эллиптической проекции Меркатора, тоε=0.0818191908426
. Если для сферической проекции, тоε=0
. По умолчанию в Яндекс.Картах используется эллиптическая проекция Меркатора.
Тогда глобальные пиксельные координаты [xp, yp] для заданного уровня масштабирования
z
можно вычислить по формулам:где:
-
Разделить глобальные пиксельные координаты на 256 и округлить результат до целого в меньшую сторону. Полученные значения и будут номером тайла.
Реализация вычислений на языке JavaScript
Использование логотипа Яндекса
При работе с API необходимо соблюдать условие: на карте должен присутствовать логотип Яндекса.
Логотип Яндекса необходимо добавить поверх карты самостоятельно. Ниже приведены основные требования к использованию логотипа.
1. Размещение
Размещение логотипа возможно только в углу карты. Допускается любой из четырех углов:
2. Отступы от границ карты
Область для отступов уже предусмотрена на изображениях с логотипами. На рисунке ниже эти отступы обозначены оранжевым цветом. Дополнительные отступы от границ карты проставлять не нужно.
3. Язык
Допускается использование логотипа на двух языках — русском и английском.
4. Кликабельность
Логотип должен быть гиперссылкой на главную страницу сайта Яндекс Карт.