Укажите местоположения для маршрута

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

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

Помимо исходной и конечной точек, вы можете указать различные типы путевых точек и способы их обработки на маршруте. Дополнительную информацию и примеры см. в следующих разделах:

Укажите места для маршрута

Местоположение указывается путём создания объекта Waypoint (REST) или Waypoint (gRPC) . В определении путевой точки местоположение можно указать любым из следующих способов:

Вы можете указать местоположение всех путевых точек в запросе одинаково или комбинировать их. Например, можно использовать координаты широты и долготы для исходной путевой точки и идентификатор места для конечной путевой точки.

Для эффективности и точности используйте идентификаторы мест вместо координат широты/долготы или адресных строк. Идентификаторы мест являются уникальными и предоставляют преимущества геокодирования для маршрутизации, например, для точек доступа и данных о дорожном движении. Они помогают избежать следующих ситуаций, которые могут возникнуть при использовании других способов указания местоположения:

  • Использование координат широты/долготы может привести к привязке местоположения к ближайшей к этим координатам дороге, которая может не быть точкой доступа к объекту недвижимости или даже дорогой, которая быстро или безопасно ведет к месту назначения.
  • Для расчета маршрута строки адреса должны быть геокодированы API Routes и преобразованы в координаты широты и долготы. Это преобразование может повлиять на производительность.

Укажите местоположение как идентификатор места

Вы можете использовать идентификатор места для указания местоположения путевой точки. Поскольку координаты широты и долготы привязаны к дорогам, в некоторых случаях идентификатор места может оказаться более эффективным.

Получайте идентификаторы мест из API геокодирования и API мест (включая автозаполнение мест). Подробнее об идентификаторах мест см. в разделе «Обзор идентификаторов мест» .

В следующем примере свойство placeId используется для передачи идентификатора места как для origin , так и destination :

{
  "origin":{
    "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o"
  },
  "destination":{
    "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU"
  },
  ...
}

Укажите местоположение в виде координат широты и долготы.

Чтобы определить местоположение в точке маршрута, укажите Местоположение (REST) или Местоположение (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 Code

У многих людей нет точного адреса, что может затруднить получение посылок. Или же те, у кого есть адрес, могут предпочесть получать посылки в более определённых местах, например, у заднего входа или на погрузочной площадке.

Plus-коды — это своего рода адреса для людей или мест, у которых нет фактического адреса. Вместо адресов с названиями улиц и номерами домов, Plus-коды основаны на координатах широты и долготы и отображаются в виде цифр и букв.

Компания Google разработала Plus-коды , чтобы предоставить всем и каждому возможность пользоваться адресами. Plus-код — это закодированная ссылка на местоположение, полученная на основе координат широты и долготы, которая представляет область размером 1/8000 градуса на 1/8000 градуса (примерно 14 м на экваторе) или меньше. Вы можете использовать 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 Codes:

    {
      "origin":{
        "address": "849VCWC8+R9"
      },
      "destination":{
        "address": "CRHJ+C3 Stanford, CA 94305, USA"
      },
      "travelMode": "DRIVE"
    }

Коды Plus поддерживаются в API платформы Google Карт, включая Place Autocomplete , Place Details , Directions API (устаревший) и Geocoding API . Например, API Geocoding можно использовать для обратного геокодирования местоположения, заданного координатами широты и долготы, чтобы определить его код Plus Code.