Aggiorna la posizione di un veicolo

Per ottenere le migliori prestazioni con Fleet Engine, fornisci un flusso di aggiornamenti della posizione del veicolo. Utilizza uno dei seguenti modi per fornire questi aggiornamenti:

  1. Utilizza l'SDK Driver: l'opzione più semplice. Consulta la documentazione di Driver SDK per Android o iOS.
  2. Utilizza il codice personalizzato: utile se le posizioni vengono trasmesse tramite il backend o se utilizzi dispositivi diversi da Android o iOS. Questa guida illustra questo approccio.

Se non utilizzi Driver SDK per aggiornare la posizione del veicolo, puoi effettuare una chiamata diretta a Fleet Engine con la posizione del veicolo. Per qualsiasi veicolo attivo, Fleet Engine prevede un aggiornamento della posizione almeno una volta al minuto e al massimo una volta ogni 5 secondi. Questi aggiornamenti richiedono solo i privilegi di Utente SDK driver di Fleet Engine.

Esempio di aggiornamento della posizione del veicolo

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

Consulta il riferimento providers.vehicles.update.

Passaggi successivi