Memperbarui lokasi kendaraan

Untuk performa terbaik dengan Fleet Engine, berikan update lokasi kendaraan secara terus-menerus. Gunakan salah satu cara berikut untuk memberikan update ini:

  1. Menggunakan Driver SDK: opsi paling sederhana. Lihat dokumentasi Driver SDK untuk Android atau iOS.
  2. Gunakan kode khusus: berguna jika lokasi disampaikan melalui backend, atau jika Anda menggunakan perangkat selain Android atau iOS. Panduan ini membahas pendekatan tersebut.

Jika tidak menggunakan Driver SDK untuk memperbarui lokasi kendaraan, Anda dapat membuat panggilan langsung ke Fleet Engine dengan lokasi kendaraan. Untuk setiap kendaraan aktif, Fleet Engine mengharapkan pembaruan lokasi setidaknya sekali setiap menit dan maksimal setiap 5 detik sekali. Pembaruan ini hanya memerlukan hak istimewa Fleet Engine Driver SDK User.

Contoh pembaruan lokasi kendaraan

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

Lihat referensi providers.vehicles.update.

Langkah berikutnya