Teslimat aracı konumunu güncelleme

Yaklaşımlar

Fleet Engine ile en iyi performansı elde etmek için Fleet Engine'e bir araç akışı sağlayın konum en az dakikada bir, en çok 5 saniyede bir güncellenir. Bu güncellemeleri sağlamak için aşağıdaki yöntemlerden birini kullanın:

  • Sürücü SDK'sını kullanın: En basit seçenektir.
  • Özel kod kullan: Konumların arka ucunuz üzerinden geçişi durumunda kullanışlıdır veya Android ya da iOS dışında cihazlar kullanıyorsanız. Bu dokümanda, bahsedeceğiz.

Araç konumu güncellemelerini nasıl sağladığınızdan bağımsız olarak, arka ucunuz bir teslimat aracı durduğunda durabilir. Buna deponun kendisi de dahildir. Filo Motoru bu etkinlikleri otomatik olarak algılamaz.

Araç konumu güncelleme örnekleri

Filo'da bir aracın konumunu güncellemek için Java gRPC kitaplığını kullanabilirsiniz veya REST kullanın.

Java

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
      .setLastLocation(DeliveryVehicleLocation.newBuilder()
          .setSupplementalLocation(LatLng.newBuilder()
              .setLatitude(37.3382)
              .setLongitude(121.8863))
          .setSupplementalLocationTime(now())
          .setSupplementalLocationSensor(DeliveryVehicleLocationSensor.CUSTOMER_SUPPLIED_LOCATION)
          .setSupplementalLocationAccuracy(DoubleValue.of(15.0)))  // Optional
      .build();

  // DeliveryVehicle request
  UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
    UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
        .setName(vehicleName)
        .setDeliveryVehicle(myDeliveryVehicle)
        .setUpdateMask(FieldMask.newBuilder()
            .addPaths("last_location"))
        .build();

  try {
    DeliveryVehicle updatedDeliveryVehicle =
        deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=last_location

Talep ayıntıları

İstek gövdesi, şunu belirten bir DeliveryVehicle varlığı içermelidir: alanları şu şekilde ayarlayın:

  • Zorunlu alanlar:

    AlanDeğer
    lastLocation.supplementalLocation Aracın konumu.
    lastLocation.supplementalLocationTime Aracın bu konumda olduğu bilinen son zaman damgası.
    lastLocation.supplementalLocationSensor CUSTOMER_SUPPLIED_LOCATION ile doldurulmalıdır.

  • İsteğe bağlı alanlar:

    AlanDeğer
    lastLocation.supplementalLocationAccuracy Sağlanan konumun metre cinsinden doğruluğu.

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "lastLocation": {
      "supplementalLocation": {"latitude": 12.1, "longitude": 14.5},
      "supplementalLocationTime": "$(date -u --iso-8601=seconds)",
      "supplementalLocationSensor": "CUSTOMER_SUPPLIED_LOCATION",
      "supplementalLocationAccuracy": 15
    }
  }
  EOM

Sırada ne var?