В рамках услуги «Мобильность по требованию» вы можете найти ближайшие транспортные средства с помощью метода SearchVehicles
.
Метод SearchVehicles
позволяет вам находить в вашем потребительском мобильном приложении ближайшие транспортные средства, которые лучше всего подходят для конкретной поездки или запроса на доставку. API SearchVehicles
возвращает ранжированный список транспортных средств, атрибуты которых соответствуют запрошенным атрибутам поездки. Рейтинг определяется по вашему выбору: расчетное время прибытия, расстояние или расстояние по прямой от точки посадки.
Поиск по атрибутам | Атрибуты автомобиля |
---|---|
|
|
Используйте метод SearchVehicles
Чтобы использовать SearchVehicles
, следуйте следующему общему процессу:
- Создайте
SearchVehiclesRequest
на основе назначаемой поездки. - Вызовите API
SearchVehicles
(vehicleService.searchVehicles
) с помощью созданного запроса. - Обработайте
SearchVehicleResponse
, возвращенный из API.
Поиск транспортных средствПоля запроса
Для создания SearchVehiclesRequest
используйте следующие обязательные поля атрибутов:
Поле | Описание |
---|---|
родитель | Необходимый . Должно быть в формате поставщики/{поставщик}. Поставщиком должен быть идентификатор проекта Google Cloud, участником которого является учетная запись службы, выполняющая этот вызов. |
типы_транспортных средств | Необходимый . Типы запрошенных транспортных средств: АВТО, ДВУХКОЛЕСНЫЙ, ТАКСИ, ГРУЗОВИК, ВЕЛОСИПЕД или ПЕШЕХОД. |
тип_путешествия | Необходимый . Либо ЭКСКЛЮЗИВНЫЙ (одна активная поездка за раз для каждого водителя), либо ОБЩИЙ (одна или несколько поездок одновременно для каждого водителя). |
минимальная_емкость | Необходимый . Минимальная остаточная вместимость транспортного средства для новой поездки как для пассажиров, так и для доставок. |
точка_подачи | Необходимый . Место начала поездки в координатах широты и долготы. |
dropoff_point | Необязательный. Место отправления рейса в координатах широты и долготы. Поле является обязательным, если trip_types содержит TripType.SHARED. |
Pickup_radius_meters | Необходимый . Радиус в метрах зоны поиска автомобиля от точки посадки. |
заказ_по | Необходимый . Заказывайте транспортные средства по одному из следующих вариантов:
|
считать | Необходимый . Максимальное количество возвращаемых автомобилей от 1 до 50. |
Фильтр | Необязательный . Запрос-фильтр, применяемый при поиске транспортных средств. |
Полный набор полей SearchVehicleRequest см. в справочной документации.
Поиск транспортаСценарии запроса
В этом разделе показаны примеры создания SearchVehiclesRequest
.
Например, предположим, что клиент хочет, чтобы его забрали в ресторане X, и у вас есть четыре автомобиля:
- Транспортное средство 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
Поля ответа SearchVehiclesResponse
SearchVehiclesResponse
состоит из списка объектов VehicleMatch
, ранжированных по указанному атрибуту order_by в SearchVehiclesRequest
. Каждый объект VehicleMatch
имеет следующие поля:
Поле | Описание |
---|---|
транспортное средство | Объект Vehicle , включая атрибуты Vehicle_id и Vehicle . |
Vehicle_pickup_eta | Расчетное время прибытия автомобиля в место получения новой поездки. Это расчетное время прибытия (ETA). |
Vehicle_Pickup_distance_meter | Расстояние в метрах между транспортным средством и местом посадки новой поездки. |
Vehicle_pickup_straight_line_distance_meter | Расстояние по прямой в метрах между транспортным средством и местом посадки новой поездки. |
Vehicle_dropoff_eta | Временная метка прибытия автомобиля в место посадки новой поездки. Обратите внимание, что ETA является ведущим 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.