Standort eines Lieferfahrzeugs aktualisieren

Approaches

Die beste Leistung erzielen Sie, wenn Sie Fleet Engine mit einem Fahrzeugstrom versorgen. Standortaktualisierungen mindestens einmal pro Minute und höchstens alle 5 Sekunden. Verwenden Sie eine der folgenden Möglichkeiten, um diese Aktualisierungen bereitzustellen:

  • Driver SDK verwenden: Das ist die einfachste Option.
  • Benutzerdefinierten Code verwenden: Dies ist hilfreich, wenn Standorte über Ihr Back-End weitergeleitet werden. oder wenn Sie andere Geräte als Android oder iOS verwenden. In diesem Dokument wird Folgendes behandelt: Ansatz.

Unabhängig davon, wie Sie Aktualisierungen des Fahrzeugstandorts bereitstellen, ist für die Aktualisierung von Fleet Engine zuständig, wenn ein Lieferfahrzeug auf dem Weg zu einem und bei der Ankunft an einer Haltestelle. Dazu gehört auch das Depot selbst. Fleet Engine werden solche Ereignisse nicht automatisch erkannt.

Beispiele für Fahrzeugstandorte aktualisieren

Sie können die Java gRPC-Bibliothek verwenden, um den Standort eines Fahrzeugs in Fleet zu aktualisieren. oder REST verwenden.

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

Anfragedetails

Der Anfragetext muss eine DeliveryVehicle-Entität enthalten, die Folgendes angibt: wie folgt:

  • Pflichtfelder:

    FeldWert
    lastLocation.supplementalLocation Der Standort des Fahrzeugs.
    lastLocation.supplementalLocationTime Der letzte bekannte Zeitstempel, mit dem sich das Fahrzeug an diesem Standort befand.
    lastLocation.supplementalLocationSensor Sollte mit CUSTOMER_SUPPLIED_LOCATION gefüllt werden.

  • Optionale Felder:

    FeldWert
    lastLocation.supplementalLocationAccuracy Genauigkeit des angegebenen Standorts in Metern.

  # 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

Nächste Schritte