В рамках услуги поездок по запросу Mobility вы можете найти ближайшие транспортные средства с помощью метода SearchVehicles
.
Метод SearchVehicles
позволяет найти в мобильном приложении клиента доступные автомобили поблизости, которые лучше всего подходят для конкретной поездки или доставки. API SearchVehicles
возвращает ранжированный список автомобилей, характеристики которых соответствуют запрошенным параметрам поездки. Рейтинг формируется по выбранному вами времени прибытия, расстоянию или расстоянию по прямой от места посадки.
Атрибуты поиска | Атрибуты транспортного средства |
---|---|
|
|
Используйте метод SearchVehicles
Чтобы использовать SearchVehicles
, следуйте этой общей процедуре:
- Создайте
SearchVehiclesRequest
на основе поездки, которую необходимо назначить. - Вызовите API
SearchVehicles
(vehicleService.searchVehicles
) с помощью сконструированного запроса. - Обработайте
SearchVehicleResponse
, возвращенный API.
Поля запроса SearchVehicles
Используйте следующие обязательные поля атрибутов для создания SearchVehiclesRequest
:
Поле | Описание |
---|---|
родитель | Обязательно . Должен быть в формате providers/{provider}. Поставщик должен быть идентификатором проекта Google Cloud, участником которого является учетная запись службы, выполняющая этот вызов. |
типы_транспортных средств | Обязательно . Укажите тип транспортного средства: АВТОМОБИЛЬ, ДВУХКОЛЕСНЫЙ ТРАНСПОРТНЫЙ СРЕДСТВО, ТАКСИ, ГРУЗОВИК, ВЕЛОСИПЕД или ПЕШЕХОД. |
типы_поездок | Обязательно . Либо ЭКСКЛЮЗИВНЫЙ (одна активная поездка за раз на водителя), либо СОВМЕСТНЫЙ (одна или несколько поездок за раз на водителя). |
минимальная_емкость | Обязательно . Минимальная оставшаяся вместимость транспортного средства для новой поездки, будь то для перевозки пассажиров или доставки. |
пункт_выдачи | Обязательно . Место отправления в координатах широты и долготы. |
точка_высадки | Необязательно. Место назначения в координатах широты и долготы. Поле обязательно, если trip_types содержит TripType.SHARED. |
pickup_radius_meters | Обязательно . Радиус зоны поиска автомобиля в метрах от точки подачи. |
заказ_по | Обязательно . Заказывайте автомобили одним из следующих способов:
|
считать | Обязательно . Максимальное количество возвращаемых транспортных средств: от 1 до 50. |
фильтр | Необязательно . Фильтрующий запрос, применяемый при поиске транспортных средств. |
максимальная_стабильность | Необязательно . Ограничивает поиск только теми транспортными средствами, которые отправляли обновления местоположения в Fleet Engine в течение указанного периода времени. Если это поле не задано, сервер использует значение по умолчанию — пять минут. |
Полный набор полей SearchVehicleRequest можно найти в справочной документации.
Сценарии поискатранспортных средств
В этом разделе показаны примеры того, как построить SearchVehiclesRequest
.
Например, предположим, что клиент хочет, чтобы его забрали из RestaurantX, и у вас есть четыре автомобиля:
- Транспортное средство 1 : 3500 м от RestaurantX.
- Транспортное средство 2 : в 100 м от RestaurantX с активной поездкой с посадкой и высадкой в точках A и B.
- Транспортное средство 3 : в 200 м от RestaurantX, одна оставшаяся остановка находится очень далеко.
- Транспортное средство 4 : в 1000 м от RestaurantX.
Ниже показаны различные запросы по возвращаемому транспортному средству.
Возврат автомобиля 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
Поля ответа SearchVehicles
Ответ SearchVehiclesResponse
содержит список сущностей VehicleMatch
, отсортированных по указанному атрибуту order_by в SearchVehiclesRequest
. Каждая сущность VehicleMatch
имеет следующие поля:
Поле | Описание |
---|---|
транспортное средство | Объект Vehicle , включая атрибуты vehicle_id и Vehicle . |
vehicle_pickup_eta | Расчетное время прибытия транспортного средства в место получения, если поездка была бы назначена на транспортное средство прямо сейчас. |
измеритель_расстояния_подъема_транспортного_средства | Расстояние в метрах между транспортным средством и местом начала новой поездки. |
измеритель_расстояния_по_прямой_линии_для_подбора_транспортного_средства | Расстояние по прямой в метрах между транспортным средством и местом посадки в новой поездке. |
vehicle_dropoff_eta | Расчетное время прибытия транспортного средства в пункт высадки, если поездка была бы назначена транспортному средству прямо сейчас. |
точки_пути_транспорта | Список оставшихся путевых точек, включая точки посадки и высадки, для активных поездок, назначенных в данный момент транспортному средству. |
тип_соответствия_транспортного_средства | Тип поездки транспортного средства: 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 . Подробную информацию о создании атрибутов транспортного средства см. в разделе « Поле «Атрибуты транспортного средства»» руководства «Обновление полей транспортного средства» .
Пример SearchVehicles
В следующем примере показано, как использовать 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.