Картографические тайлы — это просто разделение мира на индексированную сетку. Это позволяет эффективно и динамично получать доступ к картографическим данным и использовать их в различных картографических масштабах. API картографических тайлов предоставляет доступ к множеству тематических геоданных, включая данные, отобранные Google:
Изображения для дорожных карт, созданные на основе векторных топографических данных с использованием картографического стиля Google.
Ортофотосъемка, выполненная как спутниковыми, так и бортовыми камерами, позволяет получить изображение Земли сверху (в надир).
Контурные карты рельефа.
Двумерные фрагменты карты имеют географическую привязку и выровнены относительно друг друга. Они выбираются в зависимости от географических границ области просмотра и уровня масштабирования. Уровни масштабирования варьируются от нуля (для просмотра всего мира) до 22 (для просмотра улиц и кварталов).
Темы карт
Вы можете получить фрагменты карты для следующих тематик.
| Тема карты | Описание |
|---|---|
| Дорожная карта | Дороги, здания, достопримечательности и политические границы |
| Спутник | Фотографические снимки, сделанные из космоса. |
| Рельеф | Контурная карта, отображающая природные особенности, такие как растительность. |
Для запроса фрагментов карты через API Map Tiles необходимо сначала запросить токен сессии . Токен сессии отслеживает текущее состояние вашей карты и области просмотра. При настройке токена сессии необходимо указать значение mapType , соответствующее желаемой теме карты. Затем необходимо включать токен сессии в каждый запрос к API Map Tiles.
Запросы на предоставление информации о области просмотра
Размер области просмотра определяет размер прямоугольника, ограничивающего изображение мира. Запросы информации об области просмотра возвращают подробные сведения о фрагментах карты, составляющих текущую область просмотра. Запрос информации об области просмотра необходим для того, чтобы избежать запроса изображений на уровнях масштабирования, которых не существует.
Например, изображения большинства городов доступны при уровне масштабирования 22, но океан — нет, поскольку в этом случае он будет отображаться в виде безликих синих квадратов.
Запрос viewport представляет собой 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
};
}