Arka arkaya geziler oluşturun

Bu dokümanda, art arda seyahatlerin nasıl oluşturulacağı, doğru alanların nasıl ayarlanacağı ve bu seyahatlerin yerine getirileceği bir araca nasıl atanacağı açıklanmaktadır. Bu eğitimde, Fleet Engine'ı kurduğunuz, araç oluşturduğunuz, çalışan uygulaması 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ğıdaki ilgili kılavuzları inceleyin:

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 ve REST'i kullanarak bir oluşturma isteği gönderirsiniz.

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

Seyahat Alanları

Fleet Engine'da gezi oluşturmak için aşağıdaki alanları kullanın. Farklı seyahat türleri için farklı alanlar kullanabilirsiniz: tek veya çok hedefli, art arda yapılan veya ortak havuz seyahatleri. İ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. Seyahat kimliklerinde, referans bölümünde belirtildiği gibi belirli kısıtlamalar vardır.
trip_type Evet Oluşturduğunuz seyahat türü için TripType parametresini aşağıdaki değerlere ayarlayın:
  • Tek hedef: SHARED veya EXCLUSIVE olarak ayarlayın.
  • Çok hedefli: EXCLUSIVE olarak ayarlayın.
  • Arka arkaya: EXCLUSIVE olarak ayarlayın.
  • Ortak havuz: SHARED olarak ayarlanır.
pickup_point Evet Seyahatin kalkış noktası.
Orta düzey 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. Atanmış araç için kalan tüm yol noktalarının yanı sıra bu seyahatin teslim alma ve bırakma yol noktalarını içerir. Bu alanı CreateTrip veya UpdateTrip numaralı telefonu arayarak ayarlayabilirsiniz. Araç yol işaretlerini UpdateVehicle çağrısı yaparak waypoints alanı üzerinden de güncelleyebilirsiniz. Hizmet, gizlilik nedeniyle GetTrip aramalarında bu bilgileri döndürmez.

number_of_passengers Hayır Gezideki yolcu sayısı.
dropoff_point Hayır Seyahatin 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 hedefli bir gezi oluşturma işlemiyle aynıdır. Daha sonra başka bir gezi oluşturup bunu etkin bir gezisi olan bir araca atarsınız.

// 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;
}

Arka arkaya yapılan gezileri güncelleme

Arka arkaya seyahat için bir araç atadığınızda, daha önce atanmış olsa bile bir seyahat için araca atadığınızda

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.

Fleet Engine, geziyi bir araca atadıktan sonra art arda yapılan gezilerle ilişkili yol işaretlerini aracın yol işaretleri alanına otomatik olarak ekler. Bir seyahatin remainingWaypoints alanında, seyahatin teslimat noktasından önce ziyaret edilecek diğer seyahatlerdekiler de dahil olmak üzere tüm yol noktalarının listesi bulunur.

Örneğin, arka arkaya yapılan iki seyahat olduğunu varsayalım: A Seyahat ve B Seyahat. Araç, A Gezisi için tüketiciyi aldı ve bırakma konumuna giderken sürücü, bir sonraki gezi olan B Gezisi için başka bir tüketiciyi alma isteği aldı.

  • getVehicle() çağrısı, şunu içeren remainingWaypoints döndürür:
    A TeslimB Teslim almaB Teslim.
  • getTrip() veya A gezisi için onTripRemainingWaypointsUpdated geri çağırma işlevi, şunları içeren remainingWaypoints döndürür:
    Bir araç bırakma.
  • getTrip() veya B Gezisi için onTripRemainingWaypointsUpdated geri çağırma işlevi,
    şunu içeren remainingWaypoints döndürür:
    A BırakmaB Başlama → ve B Bırakma.

Sırada ne var?