Получить матрицу маршрута

Используйте API маршрутов, чтобы рассчитать расстояние и продолжительность маршрута для нескольких пунктов отправления и назначения, вызвав метод ComputeRouteMatrix (REST) ​​или потоковый метод ComputeRouteMatrix (gRPC).

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

Получить матрицу транзитных маршрутов

Вы также можете вычислить матрицу маршрутов при транзите. Пример см. в разделе Получение матрицы маршрутов при транзите .

Запросить лимиты

Методы Compute Route Matrix обеспечивают следующие ограничения запросов для путевых точек, использующих адрес или идентификаторы места, а также для элементов. Элементы — это маршруты между каждым пунктом отправления и пунктом назначения в матрице маршрутов, поэтому количество элементов равно числу пунктов отправления , умноженному на количество пунктов назначения. Например, если у вас есть 10 пунктов отправления и 10 пунктов назначения, у вас есть 100 элементов:

  • Количество элементов не может превышать 625 для маршрутов, не являющихся TRANSIT .

  • Если вы укажете TRANSIT маршрут , количество элементов не может превышать 100.

  • Если вы укажете TRAFFIC_AWARE_OPTIMAL , количество элементов не может превышать 100. Дополнительные сведения о TRAFFIC_AWARE_OPTIMAL см. в разделе Укажите, как и если включать данные о трафике .

  • Если вы указываете пункты отправления или назначения с помощью адреса или идентификатора места , таким образом вы указываете всего до 50.

Ошибки ответа

Одной из особенностей методов Compute Route Matrix является то, что ошибки могут возвращаться либо для всего ответа, либо для отдельных элементов ответа. Например, весь ответ содержит ошибку, если запрос имеет неверный формат (например, у него нулевое происхождение).

Однако если ошибка относится к подмножеству элементов ответа (например, маршрут не может быть вычислен для одной комбинации пункта отправления и назначения), то код ошибки возвращают только те элементы, на которые повлияла ошибка.

Результаты потока gRPC

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

Не гарантируется, что элементы, возвращаемые потоком, будут возвращены в любом порядке. Таким образом, каждый элемент ответа содержит origin_index и destination_index . Для источников и пунктов назначения, указанных в запросе, источник маршрута эквивалентен origins[origin_index] для данного элемента, а пункт назначения маршрута эквивалентен destinations[destination_index] . Эти массивы имеют нулевой индекс. Важно сохранить порядок списка отправителей и пунктов назначения.

Примеры расчета матрицы маршрутов

Используйте метод CompeRouteMatrix в HTTP-запросе, чтобы вычислить матрицу маршрутов.

Пример HTTP

В следующем примере показан HTTP-запрос computeRouteMatrix . В этом примере вы:

  • Укажите массив из двух точек отправления и двух точек назначения. Метод вычисляет маршрут от каждого пункта отправления до каждого пункта назначения, поэтому ответ содержит четыре маршрута.

    В массиве первый элемент имеет индекс 0, второй — индекс 1 и т. д.

  • Включите маску поля ответа, чтобы указать, какие поля ответа (REST) ​​или ComputeRoutesResponse (gRPC) нужно вернуть. В этом примере настройте запрос на возврат originIndex , destinationIndex , duration , distanceMeters , status и condition для каждого маршрута. Дополнительные сведения см. в разделе Выбор полей для возврата .

curl -X POST -d '{
  "origins": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420761,
            "longitude": -122.081356
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.403184,
            "longitude": -122.097371
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    }
  ],
  "destinations": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420999,
            "longitude": -122.086894
          }
        }
      }
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.383047,
            "longitude": -122.044651
          }
        }
      }
    }
  ],
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \
'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'

Ответ содержит четыре возможных маршрута для комбинации всех точек отправления и назначения.

Определите каждый маршрут в ответе, используя поля ответа originIndex и destinationIndex . Например, значение originIndex равное 1, в ответе соответствует маршруту, рассчитанному на основе путевой точки с индексом 1 массива origins в запросе.

[
    {
        "originIndex": 0,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 822,
        "duration": "160s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 2919,
        "duration": "361s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 5598,
        "duration": "402s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 0,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 7259,
        "duration": "712s",
        "condition": "ROUTE_EXISTS"
    }
]

пример gRPC

Примеры запросов gRPC см. в разделе Пример запроса gRPC . Пример Java на этой странице вызывает как Вычисление маршрутов, так и Вычисление матрицы маршрутов.

Пример клиентского JavaScript

const reqBody = {
   "origins": [
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.420761,
               "longitude": -122.081356
             }
           }
         }
       },
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.403184,
               "longitude": -122.097371
             }
           }
         }
       }
     ],
     "destinations": [
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.420999,
               "longitude": -122.086894
             }
           }
         }
       },
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.383047,
               "longitude": -122.044651
             }
           }
         }
       }
     ],
   "travelMode": "DRIVE",
   "routingPreference": "TRAFFIC_AWARE_OPTIMAL"
};
fetch("https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix", {
   method: "POST",
   headers: {
       "Content-Type": "application/json",
       "X-Goog-Api-Key": "YOUR_API_KEY",
       "X-Goog-FieldMask": "*"
   },
   body: JSON.stringify(reqBody)
}).then((response) => {
   return response.json();
}).then((data) => {
   if(data.hasOwnProperty("error")){
       console.log(data.error);
   } else {
       console.log(data);
   }
}).catch((error) => {
   console.log(error)
});