Поиск автомобилей

В рамках услуги «Мобильность по требованию» вы можете найти ближайшие транспортные средства с помощью метода SearchVehicles .

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

Поиск по атрибутам Атрибуты автомобиля
  • Места посадки и высадки
  • Запрашиваемый автомобиль и типы поездок
  • Требуемая мощность
  • Другие обязательные атрибуты соответствия
  • Последнее известное местонахождение автомобиля
  • Состояние, тип или вместимость транспортного средства
  • Другие пользовательские атрибуты

Используйте метод SearchVehicles

Чтобы использовать SearchVehicles , следуйте следующему общему процессу:

  1. Создайте SearchVehiclesRequest на основе назначаемой поездки.
  2. Вызовите API SearchVehicles ( vehicleService.searchVehicles ) с помощью созданного запроса.
  3. Обработайте SearchVehicleResponse , возвращенный из API.

Поиск транспортных средствПоля запроса

Для создания SearchVehiclesRequest используйте следующие обязательные поля атрибутов:

Поле Описание
родитель Необходимый . Должно быть в формате поставщики/{поставщик}. Поставщиком должен быть идентификатор проекта Google Cloud, участником которого является учетная запись службы, выполняющая этот вызов.
типы_транспортных средств Необходимый . Типы запрошенных транспортных средств: АВТО, ДВУХКОЛЕСНЫЙ, ТАКСИ, ГРУЗОВИК, ВЕЛОСИПЕД или ПЕШЕХОД.
тип_путешествия Необходимый . Либо ЭКСКЛЮЗИВНЫЙ (одна активная поездка за раз для каждого водителя), либо ОБЩИЙ (одна или несколько поездок одновременно для каждого водителя).
минимальная_емкость Необходимый . Минимальная остаточная вместимость транспортного средства для новой поездки как для пассажиров, так и для доставок.
точка_подачи Необходимый . Место начала поездки в координатах широты и долготы.
dropoff_point Необязательный. Место отправления рейса в координатах широты и долготы. Поле является обязательным, если trip_types содержит TripType.SHARED.
Pickup_radius_meters Необходимый . Радиус в метрах зоны поиска автомобиля от точки посадки.
заказ_по Необходимый . Заказывайте транспортные средства по одному из следующих вариантов:
  • PICKUP_POINT_ETA, расчетное время прибытия автомобиля в точку получения.
  • PICKUP_POINT_DISTANCE, расстояние между автомобилем и точкой посадки.
  • DROPOFF_POINT_ETA — расчетное время прибытия транспортного средства для завершения поездки в точке высадки.
  • PICKUP_POINT_STRAIGHT_DISTANCE — расстояние по прямой (вне маршрута) между транспортным средством и точкой посадки.
считать Необходимый . Максимальное количество возвращаемых автомобилей от 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 см. в разделе:

Используйте запросы-фильтры

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.

Что дальше