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. Bu eğitimde, Fleet Engine'ı oluşturduğunuz, araç oluşturduğunuz, çalışan uygulamasına ve isteğe bağlı olarak tüketici uygulamasına sahip olduğunuz varsayılmaktadır. Ayrıca, isteğe bağlı seyahatler için kullanılabilen çeşitli seyahat senaryolarını da bilmeniz gerekir. 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, Fleet Engine'da gezi oluşturmak için gerekli istek ayrıntıları açıklanmaktadır. gRPC veya REST kullanarak bir oluşturma isteği gönderirsiniz.

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

Seyahat 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. İsteğe bağlı alanları geziyi oluştururken sağlayabilir veya geziyi güncellerken daha sonra ayarlayabilirsiniz.

Seyahat alanları
Ad Zorunlu mu? Açıklama
parent Evet Proje kimliğini içeren bir dize. Bu kimlik, Fleet Engine entegrasyonunuzun tamamında kullanılan ve aynı hizmet hesabı rolleriyle aynı kimlik olmalıdır.
trip_id Evet Bu geziyi benzersiz bir şekilde tanımlayan, sizin oluşturduğunuz 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.
  • Ortak havuz: SHARED olarak ayarlanır.
pickup_point Evet Seyahatin kalkış noktası.
Orta seviye hedefler Evet

Yalnızca çok hedefli seyahatler: Sürücünün, alma ve bırakma noktası arasında ziyaret ettiği ara hedeflerin listesi. dropoff_point ile olduğu gibi bu alan, UpdateTrip çağrılarak daha sonra da ayarlanabilir ancak çok hedefli seyahatler, tanımı gereği ara hedefler içerir.

vehicle_waypoints Evet

Yalnızca ortak havuzdaki seyahatler: Bu alan, birden fazla seyahatteki yol noktalarının birbirine karıştırılmasını destekler. Burada, atanan araç için kalan tüm ara noktaları da olarak ayarlayabilirsiniz. Bu alanı CreateTrip veya UpdateTrip numarasını arayarak ayarlayabilirsiniz. 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 Geziye atanan aracın kimliği.

Örnek: arka arkaya seyahat oluşturma

Aşağıda, art arda seyahatlerin nasıl oluşturulacağı ve bir araca nasıl atanacağı gösterilmektedir. 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, daha önce atanmış olsa bile bir seyahat aracına atarsınız.

Fleet Engine'da oluşturulan tüm seyahatlerin, Fleet Engine'ın seyahat tahmini varış zamanlarını hesaplayabilmesi ve izleyebilmesi için bir araca atanması gerekir. Bu işlemi seyahat oluşturma sırasında veya daha sonra seyahati güncellerken yapabilirsiniz.

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 seyahatin remainingWaypoints alanında, seyahatin teslimat noktasından önce ziyaret edilecek diğer seyahatlerdekiler de dahil olmak üzere tüm yol işaretlerinin listesi yer alır.

Ö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 B Gezisi için onTripRemainingWaypointsUpdated geri çağırma işlevi,
    şunu içeren remainingWaypoints döndürür:
    A BırakmaB Alma → ve B Bırakma.

Sırada ne var?