В рамках сервиса Mobility по организации поездок по запросу вы можете найти ближайшие транспортные средства, используя метод SearchVehicles .
Метод SearchVehicles позволяет найти в вашем мобильном приложении доступные транспортные средства поблизости, которые лучше всего подходят для конкретной поездки или запроса на доставку. API SearchVehicles возвращает ранжированный список транспортных средств, характеристики которых соответствуют запрошенным параметрам поездки. Ранжирование осуществляется по вашему выбору: предполагаемое время прибытия, расстояние или расстояние по прямой от точки отправления.
| Атрибуты поиска | Характеристики транспортного средства |
|---|---|
|
|
Используйте метод SearchVehicles
Для использования SearchVehicles выполните следующие общие действия:
- Сформируйте запрос
SearchVehiclesRequestна основе маршрута, который необходимо назначить. - Вызовите API
SearchVehicles(vehicleService.searchVehicles), отправив сформированный запрос. - Обработайте объект
SearchVehicleResponseвозвращенный API.
Поля запроса SearchVehiclesRequest
Для создания запроса SearchVehiclesRequest используйте следующие обязательные поля атрибутов:
| Поле | Описание |
|---|---|
| родитель | Обязательно . Должен быть в формате providers/{provider}. Provider должен быть идентификатором проекта Google Cloud, участником которого является учетная запись службы, выполняющая этот вызов. |
| типы транспортных средств | Обязательно . Типы запрашиваемых транспортных средств: автомобиль, двухколесный транспорт, такси, грузовик, велосипед или пешеход. |
| trip_types | Обязательно . Либо ЭКСКЛЮЗИВНЫЙ (одна активная поездка за раз на одного водителя), либо СОВМЕСТНЫЙ (одна или несколько поездок за раз на одного водителя). |
| минимальная_вместимость | Обязательно . Минимальная оставшаяся вместимость транспортного средства для новой поездки, будь то для пассажиров или для доставки грузов. |
| точка выдачи | Обязательно . Место отправления в поездке в координатах широты и долготы. |
| точка высадки | Необязательно. Место высадки в поездке в координатах широты и долготы. Поле обязательно для заполнения, если trip_types содержит TripType.SHARED. |
| радиус_подбора_в_метрах | Обязательно . Радиус зоны поиска транспортного средства в метрах от точки посадки. |
| order_by | Обязательно . Закажите транспортные средства одним из следующих способов:
|
| считать | Обязательно . Максимальное количество возвращаемых транспортных средств от 1 до 50. |
| фильтр | Необязательный параметр . Фильтр, применяемый при поиске транспортных средств. |
| максимальная_устаревание | Необязательный параметр . Ограничивает поиск только теми транспортными средствами, которые отправили обновления местоположения в Fleet Engine в течение указанного периода времени. Если этот параметр не задан, сервер использует значение по умолчанию — пять минут. |
Полный набор полей SearchVehicleRequest см. в справочной документации.
сценарии SearchVehiclesRequest
В этом разделе приведены примеры того, как создать запрос SearchVehiclesRequest .
Например, предположим, что клиент хочет, чтобы его забрали из ресторана X, и у вас есть четыре автомобиля:
- Транспортное средство 1 : в 3500 м от ресторана X.
- Транспортное средство 2 : находится в 100 м от ресторана X, совершает активную поездку с посадкой и высадкой в точках A и B.
- Транспортное средство № 3 : находится в 200 м от ресторана RestaurantX, еще одна высадка происходит очень далеко.
- Транспортное средство № 4 : в 1000 м от ресторана X.
Ниже представлены различные запросы, предъявляемые возвращаемым транспортным средством.
Возвращает транспортное средство №4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Возврат транспортных средств 3 и 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Возвращает транспортные средства 2, 3 и 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
Поля SearchVeiclesResponse
Объект SearchVehiclesResponse представляет собой список объектов VehicleMatch , ранжированных по указанному атрибуту order_by в объекте SearchVehiclesRequest . Каждый объект VehicleMatch имеет следующие поля:
| Поле | Описание |
|---|---|
| транспортное средство | Объект Vehicle , включая атрибуты vehicle_id и Vehicle . |
| vehicle_pickup_eta | Расчетное время прибытия транспортного средства в пункт отправления, если этот рейс будет назначен данному транспортному средству прямо сейчас. |
| транспортное средство_расстояние_покупки | Расстояние в метрах между транспортным средством и местом отправления нового рейса. |
| измеритель_прямой_расстояния_транспортного_поезда | Расстояние по прямой в метрах между транспортным средством и местом отправления нового рейса. |
| vehicle_dropoff_eta | Расчетное время прибытия транспортного средства в пункт высадки, если бы эта поездка была назначена данному транспортному средству прямо сейчас. |
| vehicle_trips_waypoints | Список оставшихся путевых точек, включая пункты отправления и прибытия, для активных поездок, в настоящее время назначенных данному транспортному средству. |
| vehicle_match_type | Тип поездки транспортного средства: EXCLUSIVE, BACK_TO_BACK, CARPOOL или CARPOOL_BACK_TO_BACK. |
Полный список полей VehicleMatch см. в следующем:
-
VehicleMatch message(gRPC) -
VehicleMatch resource(REST)
Используйте фильтрующие запросы.
SearchVehicles и ListVehicles поддерживают фильтрацию по атрибутам транспортных средств с помощью фильтрующего запроса .
Фильтрующие запросы поддерживают фильтрацию ТОЛЬКО по пользовательским атрибутам транспортных средств и не могут использоваться для других полей. При использовании в поиске, включающем другие критерии, такие как minimum_capacity или vehicle_types , фильтрующий запрос функционирует как оператор AND
Например, если вы ищете транспортное средство с минимальной вместимостью 6 человек и используете фильтр по таким attributes , как «разрешено перевозить животных», ваши критерии вернут только те транспортные средства, которые одновременно разрешают перевозить животных и могут перевозить не менее 6 пассажиров.
Примеры синтаксиса запросов фильтрации см. в документе AIP-160 . Подробную информацию о создании атрибутов транспортного средства см. в разделе «Поле атрибутов транспортного средства» в руководстве по обновлению полей транспортного средства .
Пример поисковых транспортных средств
В следующем примере показано, как использовать API SearchVehicles с помощью библиотеки Java gRPC . Полный список поддерживаемых языков см. в разделе «Клиентские библиотеки для сервисов заказа поездок по требованию» .
static final String PROJECT_ID = "project-id";
VehicleServiceBlockingStub vehicleService =
VehicleService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
SearchVehiclesRequest searchVehiclesRequest = SearchVehiclesRequest.newBuilder()
.setParent(parent)
.setPickupPoint( // Grand Indonesia East Mall
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setDropoffPoint( // Balai Sidang Jkt Convention Center
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.213796).setLongitude(106.807195)))
.setPickupRadiusMeters(2000)
.setCount(10)
.setMinimumCapacity(2)
.addTripTypes(TripType.EXCLUSIVE)
.addVehicleTypes(VehicleType.newBuilder().setCategory(Category.AUTO).build())
.setCurrentTripsPresent(CurrentTripsPresent.ANY)
.setFilter("attributes.on_trip=\"false\"")
.setOrderBy(VehicleMatchOrder.PICKUP_POINT_ETA)
.build();
try {
SearchVehiclesResponse searchVehiclesResponse =
vehicleService.searchVehicles(searchVehiclesRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
List<VehicleMatch> vehicleMatches =
searchVehicleResponse.getMatchesList();
// Each VehicleMatch contains a Vehicle entity and information about the
// distance and ETA to the pickup point and drop-off point.