Arka arkaya geziler oluşturun

Bu belgede, arka arkaya gezilerin nasıl oluşturulacağı, doğru alanların nasıl ayarlanacağı ve gezinin tamamlanması için bir araca nasıl atanacağı açıklanmaktadır. Fleet Engine'i ayarladığınız, araç oluşturduğunuz, çalışan bir sürücü uygulamanız olduğu ve isteğe bağlı olarak bir tüketici uygulamanız olduğu varsayılır. Ayrıca, isteğe bağlı yolculuklar için sunulan çeşitli yolculuk senaryolarına da aşina olmanız gerekir. Bu konuda aşağıdaki ilgili rehberlere göz atın:

Gezi oluşturmayla ilgili temel bilgiler

Bu bölümde, Fleet Engine'de gezi oluşturmak için gereken 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'de seyahat oluşturmak için aşağıdaki alanları kullanın. Tek veya birden fazla varış noktası olan, arka arkaya ya da paylaşımlı yolculuklar gibi farklı türlerdeki 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
parent 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 seyahati benzersiz ş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.
  • Çoklu hedef: EXCLUSIVE olarak ayarlayın.
  • Arka arkaya: EXCLUSIVE olarak ayarlayın.
  • Paylaşılan havuz: SHARED olarak ayarlayın.
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 daha sonra UpdateTrip çağrılarak da ayarlanabilir ancak tanım gereği çok varış noktalı bir yolculuk ara varış noktaları içerir.

vehicle_waypoints Evet

Yalnızca ortak yolculuklar: Bu alan, birden fazla yolculuktaki ara noktaların iç içe geçmesini destekler. Atanan araçla ilgili 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ğrısıyla araç yol noktalarını 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 Gezintiye atanan aracın kimliği.

Örnek: Arka arkaya iki seyahat oluşturma

Aşağıda, arka arkaya iki gezi oluşturma ve bunları bir araca atama işlemi gösterilmektedir. Bu senaryoda gezi oluşturma işlemi, tek hedefli 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 yapılacak bir gezi için araç atadığınızda, daha önce atanmış olsa bile bir araca gezi atamış olursunuz.

Fleet Engine'in seyahat tahmini varış zamanlarını hesaplayabilmesi ve 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ı aracın yol noktaları alanına otomatik olarak ekler. Bir gezinin remainingWaypoints alanı, gezinin bırakma noktasından önce ziyaret edilecek diğer gezilerden olanlar da dahil olmak üzere tüm ara noktaların listesini içerir.

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

  • Arama getVehicle(), aşağıdakileri içeren remainingWaypoints döndürür:
    A Terk etme → B Teslim alma → B Terk etme.
  • getTrip() veya A Seyahati için onTripRemainingWaypointsUpdated geri çağırması, aşağıdakileri içeren remainingWaypoints döndürüyor:
    Bir terk etme.
  • getTrip() veya onTripRemainingWaypointsUpdated geri çağırma işlevi, remainingWaypoints döndürür. Bu işlevde , B Seyahati için bulunur:
    A İndirme → B Alma → ve B İndirme.

Sırada ne var?