Arka arkaya geziler oluşturun

Bu dokümanda, arka arkaya seyahatin nasıl oluşturulacağı açıklanmaktadır; bu nedenle, ve doldurulması için bir araca atayın. Filoyu kurduğunuz varsayılır Motor, araçlar oluşturdunuz, çalışan bir sürücü uygulamanız var ve isteğe bağlı olarak bir tüketici uygulaması. Ayrıca, farklı geziler hakkında bilgi sahibi isteğe bağlı seyahatler için birkaç senaryo mevcuttur. Aşağıdakiler için aşağıdaki ilgili kılavuzlara bakın: şu bilgileri sağlar:

Gezi oluşturmayla ilgili temel bilgiler

Bu bölümde, Londra'da seyahat oluşturmak için gereken istek ayrıntıları Filo Motoru. gRPC veya REST kullanarak bir oluşturma isteği gönderirsiniz.

  • CreateTrip() yöntemi: gRPC veya REST
  • CreateTripRequest mesajı: Yalnızca gRPC

Gezi Alanları

Fleet Engine'de gezi oluşturmak için aşağıdaki alanları kullanın. Farklı veri türleri için farklı seyahat türlerine yönelik alanlar sunar: tek veya çok hedefli, ortak havuz gezileri olabilir. Siz isteğe bağlı alanları geziyi oluştururken sağlayabilir veya bunları ya da siz de bu sırada gezinebilirsiniz.

Seyahat alanları
Ad Zorunlu mu? Açıklama
parent Evet Proje kimliğini içeren bir dize. Bu kimlik, kullanılan kimlikle aynı olmalıdır aynı hizmet hesabını kullanarak, Fleet Engine entegrasyonunuzun tamamında rolleriyle birlikte çalışır.
trip_id Evet Sizin oluşturduğunuz ve bu seyahati benzersiz şekilde tanımlayan bir dize. Gezi kimlikleri referansta belirtildiği şekilde bazı kısıtlamalara tabi olacaktır.
trip_type Evet TripType'ı, oluşturduğunuz gezi türü için aşağıdaki değerlere ayarlayın:
  • Tek hedef: SHARED veya EXCLUSIVE olarak ayarlayın.
  • Çok hedef: EXCLUSIVE olarak ayarlayın.
  • Back-to-back: EXCLUSIVE değerine ayarlanır.
  • Shared Pooling (Paylaşılan havuz): SHARED olarak ayarlayın.
pickup_point Evet Yolculuğun kalkış noktası.
Orta seviye hedefler Evet

Yalnızca çok hedefli geziler: Sürücün arada ziyaret ettiği ara hedeflerin listesi yardımcı olur. dropoff_point olduğu gibi bu alan da daha sonra da ayarlanabilir ancak çok hedefli bir arama yapıldığında UpdateTrip tanımı gereği ara hedefler içerir.

vehicle_waypoints Evet

Yalnızca ortak havuz gezileri: Bu alan, birden fazla seyahatteki ara noktaların arasına katılmayı destekler. Burada, atanan aracın kalan tüm ara noktaları da olarak ayarlayabilirsiniz. Bu alanı, CreateTrip veya UpdateTrip numaralı telefonu arayarak. Ayrıca transkriptinizi waypoints alanındaki araç ara noktalarını bir UpdateVehicle numaralı telefona sesli arama yapın. Hizmet GetTrip aramalarında bu bilgileri döndürmez izin verilebilir.

number_of_passengers Hayır Seyahatteki yolcu sayısı.
dropoff_point Hayır Gezinin varış noktası.
vehicle_id Hayır Seyahate atanan aracın kimliği.

Örnek: arka arkaya seyahat oluşturma

Aşağıda, arka arkaya seyahatin nasıl oluşturulacağı ve yolculuğun bir kullanıcıya nasıl atanacağı gösterilmektedir kullanabilirsiniz. Bu senaryoda, gezi oluşturma işlemi tek bir varış noktası için yapılanla aynıdır hayal edin. Yalnızca daha sonra başka bir gezi oluşturup bunu bir araca atarsınız zaten etkin olan bir gezide.

// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE)
    .setPickupPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .setVehicleId(VEHICLE_ID)
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId(TRIP_ID)
    .setTrip(trip)
    .build();

// Error handling.
try {
  // Fleet Engine automatically assigns a 'waypoints' list to the trip containing
  // the vehicle's current trip waypoints.
  Trip createdTrip =
      tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

Art arda yapılan gezileri güncelleyin

Arka arkaya seyahat için bir araç atadığınızda, veya başka bir aracı kullanmaya devam edebilir.

Fleet Engine'de oluşturulan tüm yolculuklar bir araca atanarak Fleet Engine'i kullanarak seyahat tahmini varış sürelerini hesaplayıp takip edebilir. Bu işlemi veya daha sonra, geziyi güncellediğinizde oluşturabilirsiniz.

Seyahati bir araca atadıktan sonra, Fleet Engine otomatik olarak aracın ara noktalarına yapılan art arda yolculuklarla ilişkili ara noktalar girin. Bir gezinin remainingWaypoints alanı tüm seyahatlerin listesini içerir önceden ziyaret edilecek diğer seyahatlere ait olanlar dahil, ara noktaları ve ayrılmayı tercih edebilirsiniz.

Örneğin, arka arkaya iki seyahati düşünün: A Gezisi ve B Gezisi. Araç, tüketiciyi aldı A Gezisi için ve indirme sırasında başka bir tüketiciyi teslim alma isteği alırsa sonraki gezi, B Gezisi.

  • getVehicle() araması yapıldığında remainingWaypoints değeri döndürülür şunları içeren:
    AyrılmaB Teslim almaB Ayrılma.
  • getTrip() veya Şunun için onTripRemainingWaypointsUpdated geri arama: A gezisi remainingWaypoints tarihinde dönüyor şunları içeren:
    Ayrılma.
  • getTrip() veya Şunun için onTripRemainingWaypointsUpdated geri arama: B gezisi remainingWaypoints tarihinde dönüyor şunu içeren:
    AyrılmaB Teslim alma → ve B Ayrılma.

Sırada ne var?