Этот документ является обновленной версией более старой статьи , в которой использовались предыдущие версии API GMP. Данный контент обновлен в соответствии с новой версией API для мест, запущенной в 2023-2024 годах, и API для маршрутов, запущенной в 2023 году.
Обычно, когда пользователь едет к интересующему его месту (POI), ему требуется навигация до ближайшего пункта назначения, например, парковки или точки доступа. Представьте водителя, которому нужно добраться до аэропорта или торгового центра. В аэропорту водитель стремится попасть к терминалу или месту высадки, а не в центр аэропорта. Аналогично, парковка рядом с торговым центром может быть гораздо лучшим вариантом для пользователя на автомобиле. В этом случае, при разработке приложения или сервиса для навигации водителя, сначала определите место назначения, а затем предложите водителю дополнительные варианты пунктов назначения рядом с этим местом. Такой подход позволяет предоставлять более качественный сервис клиентам и демонстрировать, что вы цените их время, с помощью небольших, но продуманных усилий по разработке, использующих данные о местоположении, предоставляемые платформой Google Maps.

Мы покажем, как можно использовать новые API для поиска мест и API для поиска маршрутов последовательно или в комбинации, чтобы определить подходящее место для парковки рядом с пунктом назначения. Это решение призвано устранить неопределенность и необходимость множественных взаимодействий при поиске места для парковки во время движения, когда вы уже приближаетесь к конечному пункту назначения. Рассмотрим два примера того, как эти сценарии могут быть реализованы более подробно.
Пример 1 — туристическая достопримечательность без парковки.
Выберите место, не имеющее прямого соединения с дорогой, чтобы маршрут нужно было прокладывать отдельно. Пункт назначения — собор Нотр-Дам в Париже, а в качестве отправной точки мы будем использовать железнодорожный вокзал Гар де л'Эст (48.87697775149635, 2.3592247806755564).

Водитель отъезжает от станции примерно в 16 минутах к северу от Нотр-Дама. Нотр-Дам — известная туристическая достопримечательность на острове, куда можно добраться по мосту, где есть несколько улиц с односторонним движением и нет большой парковки поблизости, так что это должно стать интересным испытанием.
1. Запрос к API Places
В этом примере запроса к API Places используется текстовый поиск для нахождения Нотр-Дама. Подробности см. в документации для разработчиков . "$APIKEY" в этих примерах — это ключ API, который у вас есть для API Places и Routes платформы Google Maps, включенных в консоли Google Cloud. Более подробное объяснение см. в документации по началу работы с платформой Google Maps .
Запросы к новому API Places имеют новый формат. Поля ответа больше не фиксированы, и разработчику необходимо определить маску поля в заголовке. Использование маски поля описано в документации .
curl -X POST --data @notre_dame.json \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: places.id,places.displayName,places.formattedAddress,places.location' \
'https://places.googleapis.com/v1/places:searchText'
Содержимое файла "notre_date.json" для параметров поиска:
{
"textQuery": "Notre Dame, Paris",
"languageCode": "en"
}
В ответ на вышеуказанный запрос получены следующие координаты широты и долготы:
{
"places": [
{
"id": "ChIJATr1n-Fx5kcRjQb6q6cdQDY",
"formattedAddress": "6 Parvis Notre-Dame - Pl. Jean-Paul II, 75004 Paris, France",
"location": {
"latitude": 48.852968200000007,
"longitude": 2.3499021
},
"displayName": {
"text": "Cathédrale Notre-Dame de Paris",
"languageCode": "en"
}
}
]
}
Как видите, координаты действительно указывают на собор Нотр-Дам.
![]() | ![]() |
Разработчикам и поставщикам услуг может быть полезно автоматически предлагать водителю вопрос: «Ищете парковку рядом с Нотр-Дамом?», или, если у водителя электромобиль, поиск зарядной станции. Пользовательский опыт будет различаться в зависимости от устройства и экрана, но в этом случае стоит рассмотреть вариант с ненавязчивым диалоговым окном, которое исчезает через короткое время. Чтобы найти парковку рядом с Нотр-Дамом, выполните поиск по запросу Places API nearby, используя типы «парковка» и «зарядная станция для электромобилей» с радиусом 500 метров. Следующий пример сместит результаты поиска в сторону парковок в пределах 500 метров от Нотр-Дама.
curl -X POST -d '{
"includedTypes": ["parking", "electric_vehicle_charging_station"],
"maxResultCount": 10,
"rankPreference": "DISTANCE",
"locationRestriction": {
"circle": {
"center": {
"latitude": 48.852968200000007,
"longitude": 2.3499021},
"radius": 500.0
}
}
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H "X-Goog-FieldMask: places.displayName,places.location" \
https://places.googleapis.com/v1/places:searchNearby
Первый результат — зарядная станция по адресу 48.854981, 2.350629, хотя к моменту запуска этого примера ваши результаты могут отличаться. Используйте это местоположение в следующей части, где мы будем выполнять запрос к API маршрутов.
2. Запрос к API маршрутов
Чтобы найти маршрут от станции до зарядной станции рядом с Нотр-Дамом, необходимо выполнить запрос к API маршрутов. Просто укажите параметры начала и конца маршрута. Дополнительные параметры см. в документации для разработчиков .
curl -X POST -d '{
"origin":{
"location":{
"latLng":{
"latitude": 48.87697775149635,
"longitude": 2.3592247806755564
}
}
},
"destination":{
"location":{
"latLng":{
"latitude": 48.854981,
"longitude": 2.350629
}
}
},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE",
"departureTime": "2024-05-16T15:01:23.045123456Z",
"computeAlternativeRoutes": false,
"routeModifiers": {
"avoidTolls": false,
"avoidHighways": false,
"avoidFerries": false
},
"languageCode": "en-US",
"units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'
Ответ API маршрутов обычно содержит несколько вариантов маршрута. Чтобы включить данные о маршруте в ответ, определите "routes.legs" в fieldmask. Каждый маршрут состоит из нескольких "участков", каждый из которых содержит несколько "шагов", показывающих пройденное расстояние и координаты. Чтобы найти конечные координаты, до которых можно добраться на автомобиле, используйте поле "endLocation" последнего шага последнего участка выбранного вами маршрута. "широта": 48.854937299999996, "долгота": 2.3505841999999997
Возможно, это место покажется не самым лучшим вариантом, но если вы посмотрите на карту или Google Street View, то увидите, что оно находится в нескольких минутах ходьбы от Нотр-Дама, примерно в 6-7 минутах.

Пешеходный маршрут от места парковки зарядной станции до Нотр-Дама.
Краткое изложение примера 1
Как видите, поиск парковочного места для автомобиля требует всего нескольких вызовов API и отображения предложения водителю. Это экономит время ваших пользователей, поскольку им не приходится ездить по улицам с односторонним движением или искать место для парковки в переполненном туристическом месте. Вкратце, мы выполнили следующие запросы API:
- Текстовый поисковый запрос через Places API для определения координат собора Нотр-Дам.
- Поиск с помощью Places API поблизости позволяет найти парковку со станцией зарядки электромобилей в радиусе 500 метров от указанных координат.
- Запрос к Routes API для поиска маршрута к зарядной станции.
Пример 2. Как добраться до терминала в крупном аэропорту.

Рассмотрим другой пример, когда водитель пытается добраться до большой территории, на которой расположено множество мест, точек интереса или потенциальных мест высадки. Водитель выезжает со стадиона Уэмбли, Великобритания (51.557263604707224, -0.2794575145680608) и пытается добраться до терминала 5 лондонского аэропорта Хитроу .
Преимущество нового API Places заключается в возможности определять основные типы в качестве критериев поиска в сочетании с прогнозированием API дополнительных объектов в качестве потенциальных результатов поиска. В данном случае это означает, что поиск аэропорта и парковки также вернет терминалы или автостоянки. Полный список типов, которые можно включить или исключить, можно найти в документации .
curl -X POST -d '{
"input": "Heathrow",
"includedPrimaryTypes": ["airport", "parking"]
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
https://places.googleapis.com/v1/places:autocomplete
Приведенный выше запрос выдает список терминалов и отдельных пунктов высадки пассажиров в этих терминалах. Из списка результатов мы можем найти "Лондонский аэропорт Хитроу, терминал 5" и его идентификатор:
"place_id" : "ChIJo21hnPxxdkgRksRL0KQRWII",
Используя параметр "placeId", мы можем сообщить API маршрутов, что пытаемся добраться до определенного места, а не до произвольных координат.
curl -X POST -d '{
"origin":{
"location":{
"latLng":{
"latitude": 51.557263604707224,
"longitude": -0.2794575145680608
}
}
},
"destination":{
"placeId": "ChIJo21hnPxxdkgRksRL0KQRWII"
},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE",
"departureTime": "2024-05-16T15:01:23.045123456Z",
"computeAlternativeRoutes": false,
"languageCode": "en-US",
"units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'
Как и в предыдущем примере, прочитав все шаги в JSON-ответе, вы найдете последнюю часть пути и координаты широты и долготы конечных точек (51.4714348, "долгота": -0.48967890000000003).

Краткое изложение примера 2
Как и в предыдущем примере, затраты на разработку улучшенных инструкций для водителя очень невелики, а экономия времени для водителя измерима. Мы выполнили следующие запросы:
- Новый (автозаполнение) запроса API Places для поиска терминала 5 аэропорта Хитроу.
- Запрос к API маршрутов для получения маршрута из Уэмбли до терминала 5.
Этот пример лишь поверхностно демонстрирует новые возможности Places API. Взгляните на некоторые новые типы мест , такие как взлетно-посадочная полоса и международный аэропорт.
Заключение
Как видите, усилия, необходимые для разработки и предоставления высококачественного сервиса вашим клиентам, путешествующим на автомобиле, довольно невелики, и вы можете продемонстрировать, как вы учитываете потребности своих клиентов.
В целях разработки вы можете использовать множество доступных библиотек и инструментов, которые помогут вам создавать сервисы для ваших клиентов. Ознакомьтесь с нашим общедоступным репозиторием на GitHub для Google Maps Platform .
Следующие действия
Начало работы с GMP: https://developers.google.com/maps/get-started
Рекомендуемая дополнительная литература
Документация по автозаполнению Places API (новая функция): https://developers.google.com/maps/documentation/places/web-service/place-autocomplete
Документация по API маршрутов: https://developers.google.com/maps/documentation/routes
Авторы
Основной автор: Микко Тойванен | Инженер по решениям платформы Google Maps

