Избегать разворотов

Функция "Избегать разворотов" доступна в объектах pickups и deliveries в ShipmentModel.Shipment.

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

Функция предотвращения разворотов работает следующим образом:

  1. Вы задаете свойство "Избегать разворотов" для определенного посещения.
  2. API учитывает оба направления движения по дорогам с двусторонним движением и выбирает оптимальный маршрут.
  3. API создает маршрут, в котором транспортное средство прибывает и уезжает, не разворачиваясь в месте посещения. Чтобы добраться до этого места, водителю может потребоваться перейти дорогу.

Это свойство идеально подходит для ситуаций, когда разворот затруднен или невозможен из-за размера транспортного средства, дорожных знаков или обычных условий движения.

Свойства

Свойство, позволяющее избегать разворотов, определяется в объекте VisitRequest. Этот объект используется в массивах pickups и deliveries объекта shipment.

Свойство Тип Описание
avoidUTurns Логическое значение Если задано значение true, API запрещает автомобилю разворачиваться в месте посещения. Транспортное средство прибудет и уедет в одном и том же направлении.

Примеры

В этом разделе приведены два типа примеров:

  • Примеры кода, иллюстрирующие структуру запрета на разворот.
  • Пример запроса, включающего эту функцию.

Примеры кода

Ниже показана структура avoidUTurns для получения и доставки.

"pickups":[
  {
    "arrivalLocation": {
      "latitude": 37.42506261000996,
      "longitude": -122.09535511930135
    },
    "avoidUTurns": true
  }
],
"deliveries":[
  {
    "arrivalLocation": {
      "latitude": 37.42421503206021,
      "longitude": -122.09526063135228
    },
    "avoidUTurns": true
  }
]

Пример запроса

В следующем примере показан простой запрос optimizeTours, в котором реализовано избегание разворотов. Этот запрос включает следующие элементы:

  • Объект model, содержащий информацию о самовывозе и доставке.
  • Свойство avoidUTurns, для которого задано значение true в точках посадки и высадки, чтобы транспортное средство не меняло направление движения в этих местах.
  {
    "model": {
      "shipments":[
        {
          "pickups":[
            {
              "arrivalLocation": {
                "latitude": 37.42506261000996,
                "longitude": -122.09535511930135
              },
              "avoidUTurns": true
            }
          ],
          "deliveries":[
            {
              "arrivalLocation": {
                "latitude": 37.42421503206021,
                "longitude": -122.09526063135228
              },
              "avoidUTurns": true
            }
          ]
        }
      ],
      "vehicles":[
        {
          "travelMode": "DRIVING",
          "costPerKilometer": 1.0
        }
      ]
    }
  }

sideOfRoad: избегать разворотов

Хотя функция sideOfRoad является отдельной, она тесно связана с избеганием разворотов, поскольку предотвращает многие из них, направляя автомобиль на сторону дороги, ближайшую к пункту назначения. Это заставляет автомобиль подъезжать к месту посещения с определенного направления, что устраняет необходимость разворачиваться.

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

Свойство sideOfRoad определяется в объекте Waypoint.

Взаимодействие с другими функциями

Функция избегания разворотов взаимодействует с другими функциями построения маршрутов следующим образом:

  • Сторона дороги. Если задать для параметров avoidUTurns и sideOfRoad значение true, вероятность того, что при построении маршрута автомобиль будет направлен на сторону дороги, ближайшую к месту посещения, немного увеличится. Однако это может привести к дополнительным сложностям, связанным с ограничениями на развороты. Для большинства местоположений достаточно указать только одно из этих свойств, чтобы избежать разворотов.
  • Встроенные решения. Если вы используете функцию избегания разворотов, ответ API содержит injectedSolutionLocationToken внутри сгенерированного ShipmentRoute.Visit, чтобы указать, какую сторону дороги выбрал сервис. Если вы когда-нибудь повторно используете этот визит в качестве внедренного решения в будущем запросе, вы должны передать этот токен обратно в API.

Ограничения

Функция предотвращения разворотов работает не всегда. API может включить разворот в сгенерированный маршрут при следующих условиях:

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