Fahrzeugstandort aktualisieren

Für eine optimale Leistung mit Fleet Engine sollten Sie einen Stream von Fahrzeugstandortaktualisierungen bereitstellen. Dazu haben Sie folgende Möglichkeiten:

  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: nützlich, wenn Standorte über Ihr Backend weitergeleitet werden oder wenn Sie andere Geräte als Android oder iOS verwenden. Dieser Leitfaden behandelt diesen Ansatz.

Wenn Sie den Standort des Fahrzeugs nicht mit dem Driver SDK aktualisieren, können Sie 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 Aktualisierungen sind nur die Berechtigungen Fleet Engine Driver SDK-Nutzer erforderlich.

Beispiel für die Aktualisierung des Fahrzeugstandorts

Sie können den Standort eines Fahrzeugs mit der Java gRPC-Bibliothek oder REST aktualisieren, wie im folgenden Beispiel gezeigt. Eine vollständige Liste der unterstützten Sprachen finden Sie unter Clientbibliotheken für On-Demand-Fahrtdienste.

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 zu providers.vehicles.update.

Nächste Schritte