Плитки просмотра улиц

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

Пример фрагментов Street View

Тайлы Street View похожи на 2D-тайлы, за исключением того, что они содержат панорамные изображения, снятые на уровне улицы. С помощью Street View вы можете исследовать мировые достопримечательности, увидеть чудеса природы и заглянуть внутрь таких мест, как музеи, арены, рестораны или небольшие магазины. Эта конечная точка API предоставляет вам доступ к:

  • Плитки Google Maps Street View
  • Метаданные Street View
  • миниатюры Street View

Вы можете объединять фрагменты изображений, снятые с уровня улицы, для создания реалистичного панорамного эффекта. Также вы можете запрашивать до 100 идентификаторов панорам для набора местоположений (например, маршрута) и получать более подробные метаданные о положении камеры.

Для объединения фрагментов панорам Street View требуется программа просмотра. Например, пользовательская программа просмотра панорам Street View .

Получив ключ API, вы можете получить доступ к изображениям Street View, выполнив следующие шаги.

  1. Получите токен сессии . Убедитесь, что значение параметра mapType установлено на streetview .

  2. Используйте токен сессии, чтобы получить идентификатор панорамы (panoId) для одного или нескольких географических местоположений.

  3. Используйте идентификаторы панорамы из ответа на запрос panoId, чтобы получить:

    1. Метаданные Street View . Вы также можете получить метаданные Street View, передав набор координат и радиус.

    2. Миниатюры изображений Street View .

    3. Плитки Street View .

Методы просмотра улиц

Доступ к изображениям и метаданным Street View можно получить одним из следующих четырех способов.

Метод Описание
https://tile.googleapis.com/v1/streetview/tiles Возвращает отдельные фрагменты Street View. Вы можете получить фрагменты Street View с шестью уровнями масштабирования: от 512 пикселей до 13 312 пикселей.
https://tile.googleapis.com/v1/streetview/panoIds Позволяет выполнять массовый поиск до 100 местоположений. Возвращает идентификаторы панорам для всех местоположений, для которых имеются изображения.
https://tile.googleapis.com/v1/streetview/thumbnail Возвращает миниатюрное JPEG-изображение сцены Street View. Позволяет указать заголовок, шаг, размеры и поле зрения. Минимальные размеры — 16x16 пикселей. Максимальные размеры — 250x600 пикселей.
https://tile.googleapis.com/v1/streetview/metadata Предоставляет подробную информацию об указанной панораме. В частности, указывается соответствующий адрес и ссылки на соседние панорамы.

Идентификатор панорамы для одного или нескольких географических местоположений можно найти, передав их координаты ( lat , lng ) методу panoIds . Тело запроса представляет собой объект JSON, содержащий массив locations и, при необходимости, radius , как показано в следующем примере кода JSON.

curl -X POST -d '{
  "locations": [
    {"lat": -33.883837, "lng": 151.209307},
    {"lat": -33.883700, "lng": 151.210307},
    {"lat": 0, "lng": 0}
  ],
  "radius": 50
}' \
-H 'Content-Type: application/json' \
"https://tile.googleapis.com/v1/streetview/panoIds?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY"
locations
Массив locations должен содержать как минимум один набор значений координат, но вы можете включить и больше — максимум 100.
radius
Значение radius (измеряется в метрах) определяет радиус круга вокруг заданного местоположения, в котором будет производиться поиск панорам. Значение по умолчанию — 50 метров.

Ответ PanoId

API Map Tiles пытается найти панораму, ближайшую к каждому местоположению, и возвращает её идентификаторы. Успешный запрос panoIds возвращает JSON-объект, содержащий массив panoIds . Массив содержит список идентификаторов панорам в порядке их запроса. Если API Map Tiles не может найти ни одной панорамы для запрошенных местоположений, в этом месте массива возвращается пустая строка. Пример можно увидеть в следующем JSON-коде.

{
  "panoIds": [
    "ACfH-n2HcBvRry_3oc9grw",
    "f5DJZatBAAAXHlooS2wKbw",
    ""
  ]
}

Вы можете использовать panoIds для:

Метаданные Street View

Запросы метаданных Street View получают информацию о панорамах. Запрос метаданных Street View — это HTTPS-запрос GET. Вы можете получить информацию о панорамах двумя способами:

  • Если вы передадите pano_id , то API Map Tiles вернет метаданные для этой панорамы.

  • Но если вы передадите lat и lng , то API Map Tiles вернет метаданные для ближайшей панорамы в пределах заданного радиуса поиска.

Передайте набор координат и радиус.

curl "https://tile.googleapis.com/v1/streetview/metadata?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&lat=lat&lng=lng&radius=meters"

Поскольку идентификаторы панорамы являются временными, мы рекомендуем передавать набор координат и значение radius в первоначальном запросе метаданных Street View. Пример см. в следующем фрагменте кода.

curl "https://tile.googleapis.com/v1/streetview/metadata?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&lat=47.62066&lng=-122.34923&radius=50"

Передайте панораму изображения Street View

curl "https://tile.googleapis.com/v1/streetview/metadata?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&panoId=panoId"

Ответ метаданных

Приведённый ниже JSON-код представляет собой пример типичного ответа с метаданными.

{
 "panoId": "rZ9KeTyhA11i0VppYNzsSg",
 "lat": 37.420864219339165,
 "lng": -122.08446528377291,
 "imageHeight": 6656,
 "imageWidth": 13312,
 "tileHeight": 512,
 "tileWidth": 512,
 "heading": 94.35,
 "tilt": 88.39652,
 "roll": 1.7181772,
 "imageryType": "outdoor",
 "date": "2023-01",
 "copyright": "© 2023 Google",
 "reportProblemLink": "https://cbks0.googleapis.com/cbk?output=report&panoid=rZ9KeTyhA11i0VppYNzsSg&cb_client=api&cbp=1,0,,0,0&hl=en-US&gl=us",
 "addressComponents": [
  {
   "longName": "United States",
   "shortName": "United States",
   "types": [
    "country"
   ]
  },
  {
   "longName": "Mountain View, California",
   "shortName": "Mountain View, California",
   "types": [
    "locality"
   ]
  },
  {
   "longName": "Charleston Rd",
   "shortName": "Charleston Rd",
   "types": [
    "route"
   ]
  },
  {
   "longName": "1635",
   "shortName": "1635",
   "types": [
    "street_number"
   ]
  }
 ],
 "links": [
  {
   "panoId": "Yw4pqzA4FEq1qs-BwZSvSQ",
   "heading": 274.47998046875,
   "text": "Charleston Rd"
  },
  {
   "panoId": "1cODYwFRw1aZ45IignDIMw",
   "heading": 94.47999572753906,
   "text": "Charleston Rd"
  }
 ]
}

Ниже приведён список определений полей в теле ответа.

panoId
Уникальный идентификатор этой панорамы. Не следует полагаться на то, что идентификаторы панорам будут действительны дольше, чем в течение одной пользовательской сессии.
lat , lng
Координаты (широта и долгота) панорамы. Эти значения могут отличаться от координат, указанных в запросе, поскольку местоположение определяется по ближайшей панораме.
imageHeight , imageWidth
Размеры сшитого панорамного изображения.
tileHeight , tileWidth
Размеры одного фрагмента панорамы.
heading
Направление по компасу, измеренное в градусах, по часовой стрелке от севера. Направление возвращается в диапазоне [0,360], где 0 означает направление строго на север.
tilt
Наклон панорамы, измеренный в градусах от южного полюса панорамы до горизонта. Возвращаемые значения находятся в диапазоне [0, 180]. Значение 90 градусов указывает на то, что горизонт уже выровнен по экватору панорамы.
roll
Вращение по часовой стрелке вокруг линии зрения, примененное к панораме для выравнивания горизонта. Возвращаемые значения находятся в диапазоне [0, 360].
imageryType
Указывает тип изображения. Допустимые значения: indoor и outdoor .
date
Дата, когда был сделан снимок. Не все изображения содержат данные о дате. Но если они доступны, это поле содержит комбинацию года (ГГГГ) и месяца (ММ). Например: 2023-05 или 2024.
copyright
Текст об авторских правах, который необходимо указать в качестве источника вместе с изображением Street View.
reportProblemLink
Гиперссылка, которую пользователи смогут использовать для сообщения о проблемах с этим фрагментом изображения улицы. Эта гиперссылка должна располагаться в правом нижнем углу изображения и содержать текст, например, «Сообщить о проблеме с этим изображением».
addressComponent
Структурированный геокод , содержащий подробную информацию об адресе панорамы. Для получения дополнительной информации см. раздел «Запросы и ответы геокодирования» в документации по API геокодирования.
links
Список идентификаторов панорам, которые ссылаются на эту. Также содержит направление, по которому находится ссылка. Например, если направление — 180°, то связанная панорама находится точно южнее текущей панорамы. Обратите внимание, что из-за временного характера идентификаторов панорам не следует полагаться на них более чем в течение одной пользовательской сессии.

миниатюры Street View

Вы можете запросить изображения Street View в формате thumbnail . Миниатюры — это не мозаичные изображения с заданными пользователем размером, заголовком, шагом и полем зрения. Изображения миниатюр имеют более низкое разрешение, чем мозаичные изображения, и меньший размер файла. Запрос миниатюры осуществляется путем отправки GET-запроса на конечную точку thumbnail , как показано в следующем прототипе кода.

curl "https://tile.googleapis.com/v1/streetview/thumbnail?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&panoId=panoId&height=FROM_16_TO_250&width=FROM_16_TO_600&pitch=FROM-90_TO_90&yaw=FROM-360_TO_360&fov=FROM_30_TO_120"

Рассмотрим следующий пример кода, который загружает миниатюру изображения Street View, сделанного в Уистлере, Канада.

curl "https://tile.googleapis.com/v1/streetview/thumbnail?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&panoId=Zzl28rqGJgaL2IdkUleP8A&height=200&width=200&pitch=0&yaw=250&fov=80" --output /tmp/example_thumbnail.png

Миниатюрное изображение улицы Уистлера, Канада.

Необходимые параметры

panoId
Уникальный идентификатор нужной миниатюры. Значения идентификаторов панорамы можно получить из конечной точки panoIds или из конечной точки metadata — обе принимают географические координаты и возвращают соответствующий panoId .
session
Действительный токен сессии .
key
Ваш API-ключ .

Дополнительные параметры

height
Задает высоту миниатюры в пикселях, в диапазоне от 16 до 250 пикселей. Если высота не указана, по умолчанию используется максимально допустимое значение в 250 пикселей. Если указано значение, выходящее за пределы диапазона, миниатюра автоматически подстраивается под ближайшее допустимое значение.
width
Задает ширину миниатюры в пикселях, от 16 до 600 пикселей. Если ширина не указана, по умолчанию используется максимально допустимое значение в 600 пикселей. Если указано значение, выходящее за пределы диапазона, миниатюра автоматически подстраивается под ближайшее допустимое значение.
pitch
Задает угол наклона камеры относительно вертикальной оси. Допустимые значения находятся в диапазоне -90 до 90 (включительно). Значение по умолчанию — 0.
yaw
Задает направление камеры вдоль горизонтальной оси. Допустимые значения находятся в диапазоне -360 до 360 (включительно). Значение по умолчанию — 0.
fov
Задает горизонтальное поле зрения, выраженное в градусах, с максимальным значением 120. При работе с областью просмотра фиксированного размера, например, с изображением Street View заданного размера, поле зрения соответствует масштабированию; меньшие значения указывают на более высокий уровень масштабирования. Значение по умолчанию — 90.

фрагменты изображений Street View

Получив panoId , вы можете запросить фрагмент изображения Street View. Запросы фрагментов — это HTTPS GET-запросы. Рассмотрим следующий пример.

curl "https://tile.googleapis.com/v1/streetview/tiles/z/x/y?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&panoId=panoId"

В этом примере кода z — это уровень масштабирования, а x и yкоординаты нужного фрагмента панорамы Street View. Уровни масштабирования в панорамах Street View должны находиться в диапазоне [0,5], где 0 соответствует максимально широкому полю зрения.

Уровень масштабирования Примерное поле зрения
0 360°
1 180°
2 90°
3 45°
4 22,5°
5 11,25°

Ответы на запросы Street View Tiles

Успешный запрос на получение тайла Street View возвращает изображение в формате и размере, указанных в ответе на запрос createSession .

Результат успешного запроса на создание тайла.

При нулевом уровне масштабирования вся панорама преобразуется в фрагмент размером tileWidth на tileHeight . Поскольку панорамы больше по оси x, фрагмент будет содержать пустое пространство по оси y:

нулевой уровень масштабирования

При пятом уровне масштабирования используется панорама в полном размере, разделенная на фрагменты.

Необходимо отображать информацию об авторских правах для каждой панорамы Street View. Отображаемая строка может различаться для разных панорам. Чтобы получить информацию об авторских правах, необходимо запросить метаданные Street View , после чего можно обратиться к полю copyright в ответе. Дополнительную информацию см. в разделе «Атрибуция данных» .