Arka arkaya geziler oluşturun

Bu belgede, arka arkaya yolculuk oluşturma, doğru alanları ayarlama ve yolculuğu tamamlamak için bir araca atama işlemleri açıklanmaktadır. Fleet Engine'i kurduğunuz, araç oluşturduğunuz, çalışan bir sürücü uygulamanızın ve isteğe bağlı olarak bir tüketici uygulamanızın olduğu varsayılır. Ayrıca, isteğe bağlı geziler için kullanılabilen çeşitli gezi senaryolarına da aşina olmanız gerekir. Bu konuda aşağıdaki ilgili kılavuzlara göz atın:

Gezi oluşturmayla ilgili temel bilgiler

Bu bölümde, Fleet Engine'de seyahat oluşturmak için gereken istek ayrıntıları açıklanmaktadır. gRPC ve REST'i kullanarak 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ı seyahat türleri (tek veya çok varış noktalı, arka arkaya ya da paylaşımlı yolculuklar) için farklı alanlar kullanabilirsiniz. İsteğe bağlı alanları geziyi oluştururken sağlayabilir veya geziyi güncellerken daha sonra ayarlayabilirsiniz.

Seyahat alanları
Ad Zorunlu mu? Açıklama
üst Evet Proje kimliğini içeren bir dize. Bu kimlik, aynı hizmet hesabı rolleriyle birlikte tüm Fleet Engine entegrasyonunuzda kullanılan kimlikle aynı olmalıdır.
trip_id Evet Bu geziyi benzersiz bir şekilde tanımlayan bir dize oluşturursunuz. Seyahat kimlikleri, referansta belirtildiği gibi belirli kısıtlamalara tabidir.
trip_type Evet Oluşturduğunuz gezi türü için TripType'ı aşağıdaki değerlere ayarlayın:
  • Tek hedef: SHARED veya EXCLUSIVE olarak ayarlayın.
  • Çok varış noktalı: EXCLUSIVE olarak ayarlayın.
  • Arka arkaya: EXCLUSIVE olarak ayarlayın.
  • Paylaşılan havuz: SHARED olarak ayarlanır.
pickup_point Evet Gezinin başlangıç noktası.
Ara hedefler Evet

Yalnızca çok varış noktalı yolculuklar: Sürücünün yolcu alma ve bırakma arasında ziyaret ettiği ara varış noktalarının listesi. dropoff_point ile aynı şekilde, bu alan UpdateTrip çağrılarak daha sonra da ayarlanabilir ancak tanım gereği çok varış noktalı bir yolculuk ara varış noktaları içerir.

vehicle_waypoints Evet

Yalnızca paylaşımlı havuz gezileri: Bu alan, birden fazla gezideki ara noktaların iç içe geçmesini destekler. Atanan araç için kalan tüm ara noktaların yanı sıra bu seyahatin teslim alma ve bırakma ara noktalarını içerir. Bu alanı CreateTrip veya UpdateTrip numaralı telefonu arayarak ayarlayabilirsiniz. Ayrıca, waypoints alanını kullanarak UpdateVehicle'a yapılan bir çağrıyla araç yol noktalarını da güncelleyebilirsiniz. Hizmet, gizlilik nedeniyle GetTrip görüşmelerinde bu bilgileri döndürmez.

number_of_passengers Hayır Gezideki yolcu sayısı.
dropoff_point Hayır Gezinin varış noktası.
vehicle_id Hayır Gezide kullanılan aracın kimliği.

Örnek: Arka arkaya iki gezi oluşturma

Aşağıda, arka arkaya yolculuk oluşturma ve bunu bir araca atama işlemi gösterilmektedir. Bu senaryoda gezi oluşturma işlemi, tek varış noktalı gezilerle aynıdır. Daha sonra başka bir gezi oluşturup bunu, zaten etkin bir geziye sahip 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 yolculuk için araç atadığınızda, araca daha önce bir yolculuk atanmış olsa bile yeni bir yolculuk atamış olursunuz.

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

Gezileri bir araca atadıktan sonra Fleet Engine, arka arkaya gezilerle ilişkili yol noktalarını otomatik olarak aracın yol noktaları alanına ekler. Bir geziye ait remainingWaypoints alanı, gezinin bırakma noktasından önce ziyaret edilecek diğer gezilerden alınanlar da dahil olmak üzere tüm ara noktaların listesini içerir.

Örneğin, arka arkaya iki seyahat olduğunu düşünelim: A Seyahati ve B Seyahati. Araç, A Seyahati için tüketiciyi aldı ve bırakma konumuna giderken sürücü, bir sonraki seyahat olan B Seyahati için başka bir tüketiciyi alma isteği aldı.

  • Arama getVehicle(), aşağıdakileri içeren remainingWaypoints sonuçlarını döndürür:
    A TeslimatB Teslim almaB Teslimat.
  • getTrip() veya onTripRemainingWaypointsUpdated geri çağırma işlevi, A Gezisi için remainingWaypoints döndürüyor.
    İndirme.
  • getTrip() veya B Seyahati için onTripRemainingWaypointsUpdated geri çağırma işlemi, remainingWaypoints döndürür. Bu işlem şunları içerir:
    A İndirmeB Alma → ve B İndirme.

Sırada ne var?