Обычно, когда пользователь едет к объекту интереса (POI), ему фактически требуется навигация к ближайшему месту, например, к парковке или точке доступа. Представьте себе водителя, которому нужно поехать в аэропорт или в торговый центр. При поездке в аэропорт водитель пытается добраться до терминала или пункта высадки, а не до центра территории аэропорта. Аналогично, парковка рядом с торговым центром может быть гораздо лучшим вариантом для пользователя с автомобилем. В этом случае при разработке приложения или службы для помощи водителю сначала найдите место, куда он направляется, а затем предложите водителю дополнительные пункты назначения рядом с этим местом. Такой подход позволяет вам предоставлять лучшее обслуживание своим клиентам и демонстрировать, что вы цените их время, с помощью небольшого, но разумного усилия по разработке, использующего данные о местоположении, предоставленные платформой Google Maps.
Мы покажем, как вы можете использовать Places API и Directions API последовательно или в сочетании, чтобы определить правильное место для парковки рядом с пунктом назначения. Это решение направлено на устранение неопределенности и множественных взаимодействий, чтобы найти место для парковки, приближаясь к конечному пункту назначения. Давайте подробно рассмотрим два примера того, как эти случаи могут быть реализованы.
Пример 1. Туристическая достопримечательность без парковки.
Давайте выберем место, которое не связано напрямую с обочиной, чтобы маршрут нужно было искать отдельно, пункт назначения — Нотр-Дам в Париже, а в качестве отправной точки возьмем железнодорожный вокзал Гар-де-л'Эст (48.87697775149635, 2.3592247806755564).
Водитель покидает станцию примерно в 16 минутах к северу от Нотр-Дама. Нотр-Дам — известная туристическая достопримечательность на острове с доступом к мосту, несколькими улицами с односторонним движением и отсутствием большой парковки поблизости, так что это должно быть интересной задачей.
Запрос API мест
В этом примере запроса API Places используется «текстовый поиск» для поиска Нотр-Дама. Подробности смотрите в документации разработчика . «ВАШ_КЛЮЧ» в этих примерах — это ключ API, который у вас есть для API-интерфейсов мест и маршрутов платформы Google Карт, включенных в Google Cloud Console. Более подробное объяснение можно найти в документации по началу работы с платформой Google Maps .
https://maps.googleapis.com/maps/api/place/textsearch/json?query=notre_dame&location=48.864716%2C2.349014®ion=fr&key=YOUR_KEY
Ответ на приведенный выше запрос дает следующие координаты широты и долготы:
"results" : [ { "formatted_address" : "Notre Dame, Paris", "geometry" : { "location" : { "lat" : 48.8527288, }, ...
Как видите, координаты действительно указывают на Нотр-Дам.
Разработчикам или поставщикам услуг рекомендуется автоматически подсказывать водителю: «Ищете парковку возле Нотр-Дама?». Пользовательский опыт будет различаться в зависимости от устройства и экрана, но в этом случае стоит рассмотреть тонкий всплывающий текст, который исчезает через короткое время. Чтобы найти парковку возле Нотр-Дама, выполните текстовый поиск Places API с установленными параметрами типа «парковка» и радиуса «300». В этом примере результаты будут смещены в сторону парковочных мест в пределах 300 метров от Нотр-Дама.
https://maps.googleapis.com/maps/api/place/textsearch/json?query=parking
&location=48.8527288%2C2.3505635®ion=fr&type=parking&radius=300&key=YOUR_KEY
Первый результат — «Парковка Саэмса Мобера-Лагранжа» по координатам 48.850591, 2.3486436. Давайте используем это местоположение в следующей части, где мы будем выполнять запрос API направлений.
Запрос API маршрутов
Чтобы найти маршрут от вокзала до парковки недалеко от Нотр-Дама, вам необходимо выполнить запрос API Directions. Просто установите параметры происхождения и назначения. Дополнительные параметры см. в документации разработчика .
https://maps.googleapis.com/maps/api/directions/json?origin=48.8767903,2.3592251&destination=48.850591%2C2.3486436&key=YOUR_KEY
Ответ API направления обычно содержит несколько предложений маршрута. Каждый маршрут состоит из нескольких «этапов», которые содержат несколько «шагов», показывающих расстояние и координаты. Чтобы найти конечные координаты, до которых можно добраться на автомобиле, используйте поле «end_location» последнего шага последнего этапа выбранного вами маршрута.
Это место может показаться не лучшим выбором, но если вы посмотрите на карту или Google Street View, вы обнаружите, что это место находится в нескольких минутах ходьбы, примерно в 6-7 минутах, от Нотр-Дама.
Пеший маршрут от парковки до Нотр-Дама
Резюме для примера 1
Как видите, для поиска места для парковки автомобиля требуется всего лишь несколько вызовов API и отображение предложения водителю. Это экономит время ваших пользователей, поскольку они не ездят по улицам с односторонним движением и не пытаются найти место, где можно оставить машину, в многолюдной туристической достопримечательности. Подводя итог, мы выполнили следующие запросы API:
- Запрос Places API для поиска координат Нотр-Дама
- Запрос Places API на поиск места для парковки в пределах 300 метров от этих координат.
- Запрос API маршрутов для поиска маршрута к парковке
Пример 2. Сопровождение к терминалу крупного аэропорта.
"types" : [ "airport", "point_of_interest", "establishment" ],
Однако любой, кто побывал в любом крупном аэропорту, знает, что пересадка между терминалами занимает значительное время, если вы случайно прилетели не в то место. В этом случае, поскольку типом результата поиска является «аэропорт», полезно автоматически выполнить запрос для поиска «терминала», используя местоположение лондонского аэропорта Хитроу (51.47016927594547, -0.45432767852489075). В примере также можно увидеть опциональное ограничение радиуса поиска 3000 метров.
https://maps.googleapis.com/maps/api/place/textsearch/json?query=terminal&location=51.47016927594547%2C-0.45432767852489075®ion=gb&key=YOUR_KEY&radius=3000
Приведенный выше запрос дает нам список терминалов и отдельных точек высадки на этих терминалах. В списке результатов мы можем найти «Терминал 5 лондонского аэропорта Хитроу» и его идентификатор места:
"place_id" : "ChIJtQRd6XVxdkgRTUGZtcsoGNc",
Используя параметр «place_id», мы можем сообщить API направлений, что пытаемся достичь места, а не каких-то произвольных координат.
https://maps.googleapis.com/maps/api/directions/json?origin=51.557263604707224,-0.2794575145680608&destination=place_id:ChIJtQRd6XVxdkgRTUGZtcsoGNc&key=YOUR_KEY
Опять же, как и в предыдущем примере, прочитав все шаги в ответе JSON, вы найдете последнюю часть пути, а также координаты широты и долготы конечного местоположения (51,47079979999999, -0,4896765).
Резюме для примера 2
Как и в предыдущем примере, усилия по разработке, направленные на улучшение управления водителем, очень малы, а выгоды, сэкономленные водителю во времени, легко измерить. Мы выполнили следующие запросы:
- Запрос Places API для поиска аэропорта Хитроу
- Запрос API Places для поиска всех терминалов рядом с координатами аэропорта Хитроу.
- Запрос Directions API для получения маршрута до терминала 5.
Заключение
Как видите, усилия по разработке, необходимые для предоставления услуг премиум-класса вашим клиентам, путешествующим на автомобиле, довольно невелики и позволяют вам легко продемонстрировать, как вы думаете о потребностях своих клиентов.
В целях разработки вы можете использовать множество доступных библиотек и инструментов, которые помогут вам создавать сервисы для ваших клиентов. Ознакомьтесь с нашим общедоступным репозиторием GitHub для платформы Google Maps .
Следующие действия
- Навигация из помещения в помещение
- Создание возможности проверки местоположения с помощью карт Google
Основной автор
Микко Тойванен | Инженер по решениям платформы Google Maps