Fahrzeugstandort aktualisieren

Die beste Leistung mit Fleet Engine erzielen Sie, wenn Sie einen Stream von Aktualisierungen des Fahrzeugstandorts bereitstellen. Verwenden Sie eine der folgenden Möglichkeiten, um diese Aktualisierungen bereitzustellen:

  1. Driver SDK verwenden: Die einfachste Option. Weitere Informationen finden Sie in der Driver SDK-Dokumentation für Android oder iOS.
  2. 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 Leitfaden wird dieser Ansatz beschrieben.

Wenn Sie den Standort des Fahrzeugs nicht mit dem Driver SDK aktualisieren, können Sie die Fleet Engine direkt mit dem Standort des Fahrzeugs aufrufen. Für jedes aktive Fahrzeug erwartet Fleet Engine mindestens einmal pro Minute und höchstens einmal alle 5 Sekunden eine Standortaktualisierung. Für diese Updates sind nur Berechtigungen des Fleet Engine Driver SDK-Nutzers erforderlich.

Beispiel für Aktualisierung des Fahrzeugstandorts

Java

static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";

VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);

String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
    .setLastLocation(VehicleLocation.newBuilder()
        .setSupplementalLocation(LatLng.newBuilder()
            .setLatitude(37.3382)
            .setLongitude(121.8863))
        .setSupplementalLocationTime(now())
        .setSupplementalLocationSensor(LocationSensor.CUSTOMER_SUPPLIED_LOCATION)
        .setSupplementalLocationAccuracy(DoubleValue.of(15.0)))  // Optional
    .build();

UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
    .setName(vehicleName)
    .setVehicle(updatedVehicle)
    .setUpdateMask(FieldMask.newBuilder()
        .addPaths("last_location"))
    .build();

try {
  Vehicle updatedVehicle =
      vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:
      // Most implementations will call CreateVehicle in this case
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}
// If no Exception, Vehicle updated successfully.

REST

curl -X PUT \
  "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=last_location" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  --data-binary @- << EOM
{
    "supplementalLocation": {"latitude": 12.1, "longitude": 14.5},
    "supplementalLocationTime": "$(date -u --iso-8601=seconds)",
    "supplementalLocationSensor": "CUSTOMER_SUPPLIED_LOCATION",
    "supplementalLocationAccuracy": 15
}
EOM

Weitere Informationen finden Sie in der Referenz providers.vehicles.update.

Nächste Schritte