Для расчета маршрута необходимо указать как минимум начальную и конечную точки маршрута. Эти точки задаются как промежуточные точки на маршруте.
Помимо начальной и конечной точек, вы можете указать различные типы путевых точек и способы их обработки для маршрута. Для получения дополнительной информации и примеров см. следующие разделы:
- Укажите направление движения транспортного средства и сторону дороги.
- Укажите промежуточные путевые точки
- Запланируйте остановку по маршруту
- Укажите точку, через которую будет проходить маршрут.
- Оптимизируйте порядок остановок на вашем маршруте.
Укажите места для маршрута
Местоположение можно задать, создав объект Waypoint (REST) или Waypoint (gRPC) . В определении путевой точки можно указать местоположение одним из следующих способов:
- Идентификатор места (предпочтительный)
- Координаты широты/долготы
- Адресная строка ("Чикаго, Иллинойс" или "Дарвин, Северная территория, Австралия")
- Плюс-код
В запросе можно указать местоположения для всех путевых точек одинаковым образом или же использовать смешанный подход. Например, для начальной путевой точки можно использовать координаты широты/долготы, а для конечной — идентификатор места.
Для повышения эффективности и точности используйте идентификаторы мест вместо координат широты/долготы или строковых адресов. Идентификаторы мест являются уникальными и обеспечивают преимущества геокодирования для маршрутизации, например, для точек доступа и переменных трафика. Они помогают избежать следующих ситуаций, которые могут возникнуть при других способах указания местоположения:
- Использование координат широты/долготы может привести к тому, что местоположение будет привязано к ближайшей к этим координатам дороге, которая может не являться подъездной дорогой к объекту или даже дорогой, которая быстро и безопасно ведет к месту назначения.
- Перед расчетом маршрута адресные строки должны быть предварительно геокодированы с помощью API маршрутов для преобразования их в координаты широты и долготы. Это преобразование может повлиять на производительность.
Укажите местоположение в качестве идентификатора места.
Для указания местоположения путевой точки можно использовать идентификатор места. Поскольку координаты широты и долготы привязаны к дорогам, в некоторых случаях использование идентификатора места может дать лучшие результаты.
Получайте идентификаторы мест из API геокодирования и API мест (включая автозаполнение мест). Дополнительную информацию об идентификаторах мест см. в обзоре идентификаторов мест .
В следующем примере свойство placeId используется для передачи идентификаторов мест как для origin , так и destination :
{ "origin":{ "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o" }, "destination":{ "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU" }, ... }
Укажите местоположение в виде координат широты и долготы.
Для определения местоположения в путевой точке укажите Location (REST) или Location (gRPC) , используя координаты широты/долготы.
Например, укажите путевую точку для origin и destination маршрута, используя координаты latitude и longitude :
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, ... }
Укажите местоположение в виде адресной строки.
Адресные строки — это буквальные адреса, представленные строкой (например, "1600 Amphitheatre Parkway, Mountain View, CA"). Геокодирование — это процесс преобразования адресной строки в координаты широты и долготы (например, широта 37.423021 и долгота -122.083739).
Когда вы передаете строковый адрес в качестве местоположения путевой точки, API маршрутов внутренне выполняет геокодирование строки, преобразуя ее в координаты широты и долготы.
Например, для расчета маршрута необходимо указать путевые точки origin и destination маршрута, используя строковые адреса:
{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "450 Serra Mall, Stanford, CA 94305, USA" }, ... }
В этом примере API маршрутов выполняет геокодирование обоих адресов для преобразования их в координаты широты и долготы.
Если значение адреса неоднозначно, API маршрутов может инициировать поиск для уточнения соответствия похожим адресам. Например, "1st Street" может быть полным или частичным значением для "1st street NE" или "1st St SE". Этот результат может отличаться от результата, возвращаемого API геокодирования. Для предотвращения возможных неточностей можно использовать идентификаторы мест.
Укажите регион для адреса.
Если в качестве местоположения путевой точки передать неполную строку адреса, API может использовать неверные геокодированные координаты широты/долготы. Например, вы отправляете запрос, указав «Толедо» в качестве начальной точки и «Мадрид» в качестве конечной точки маршрута:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE" }
В этом примере "Толедо" интерпретируется как город в штате Огайо, США, а не в Испании. Следовательно, запрос возвращает пустой массив, что означает отсутствие маршрутов:
{ [] }
Вы можете настроить API для возврата результатов, ориентированных на определенный регион, добавив параметр regionCode . Этот параметр задает код региона в виде двухсимвольного значения ccTLD («домен верхнего уровня») . Большинство кодов ccTLD идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, ccTLD Соединенного Королевства — «uk» (.co.uk), а его код ISO 3166-1 — «gb» (технически это означает «Соединенное Королевство Великобритании и Северной Ирландии»).
Запрос маршрута из "Толедо" в "Мадрид", содержащий параметр regionCode , возвращает корректные результаты, поскольку "Толедо" интерпретируется как город в Испании:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE", "regionCode": "es" }
В ответе теперь содержится рассчитанный маршрут из Толедо (Испания) в Мадрид (Испания):
{ "routes": [ { "distanceMeters": 75330, "duration": "4137s", ... } ] }
Укажите местоположение в качестве кода Plus.
У многих людей нет точного адреса, что может затруднить получение доставок. Или же люди, у которых есть адрес, могут предпочитать получать посылки в более конкретных местах, например, у заднего входа или на погрузочной площадке.
Плюс-коды — это как уличные адреса для людей или мест, у которых нет фактического адреса. Вместо адресов с названиями улиц и номерами домов, плюс-коды основаны на координатах широты/долготы и отображаются в виде цифр и букв.
Компания Google разработала Plus Codes, чтобы сделать использование адресов доступным для всех и для всего. Plus Code — это закодированный идентификатор местоположения, полученный из координат широты и долготы, который обозначает область размером 1/8000 градуса на 1/8000 градуса (примерно 14 м x 14 м на экваторе) или меньше. Plus Codes можно использовать вместо уличных адресов в местах, где их нет, где здания не нумеруются, а улицы не имеют названий.
Коды Plus должны быть отформатированы как глобальный код или составной код:
- Глобальный код состоит из 4-символьного кода города и 6-символьного или более длинного местного кода .
Например, для адреса "1600 Amphitheatre Parkway, Mountain View, CA" глобальный код — "849V", а локальный — "CWC8+R9". Затем вы используете весь 10-символьный код Plus Code, чтобы указать значение местоположения как "849VCWC8+R9".
- Составной код — это код, состоящий из 6 или более символов локального кода, объединенного с указанием конкретного местоположения.
Например, адрес "450 Serra Mall, Stanford, CA 94305, USA" имеет местный код "CRHJ+C3". Для составного адреса местный код объединяется с городом, штатом, почтовым индексом и страной в форме "CRHJ+C3 Stanford, CA 94305, USA".
Например, можно рассчитать маршрут, указав путевые точки
originиdestinationмаршрута с помощью Plus-кодов:{ "origin":{ "address": "849VCWC8+R9" }, "destination":{ "address": "CRHJ+C3 Stanford, CA 94305, USA" }, "travelMode": "DRIVE" }
В API платформы Google Maps, включая Place Autocomplete , Place Details , Directions API (Legacy) и Geocoding API , поддерживаются Plus Codes. Например, вы можете использовать Geocoding API для обратного геокодирования местоположения, заданного координатами широты/долготы, чтобы определить Plus Code этого местоположения.