Fahrzeugstandort aktualisieren

Für eine optimale Leistung der Fleet Engine sollten Sie ihr einen Stream von Fahrzeugstandort-Updates zur Verfügung stellen. Sie haben zwei Möglichkeiten, diese Updates bereitzustellen:

  1. Driver SDK verwenden: einfachste Option. Weitere Informationen finden Sie in der Driver SDK-Dokumentation für Android oder iOS.
  2. Benutzerdefinierten Code verwenden: Diese Option ist nützlich, wenn Standorte über Ihr Backend weitergeleitet werden oder wenn Sie andere Geräte als Android- oder iOS-Geräte verwenden. In diesem Leitfaden wird dieser Ansatz behandelt.

Wenn Sie das Driver SDK nicht zum Aktualisieren des Fahrzeugstandorts verwenden, können Sie die Fleet Engine direkt mit dem Fahrzeugstandort aufrufen. Für jedes aktive Fahrzeug erwartet Fleet Engine mindestens einmal pro Minute und höchstens einmal alle 5 Sekunden ein Standort-Update. Für diese Aktualisierungen sind nur die Berechtigungen Fleet Engine Driver SDK User erforderlich.

Beispiel für die Aktualisierung des Fahrzeugstandorts

Wenn Sie den Standort eines Fahrzeugs aktualisieren möchten, können Sie die Java-gRPC-Bibliothek oder REST verwenden, 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