Cập nhật vị trí của xe

Để có hiệu suất tốt nhất với Công cụ quản lý đội xe, hãy cung cấp cho công cụ này một luồng thông tin cập nhật vị trí của xe. Bạn có thể sử dụng một trong những cách sau để cung cấp thông tin cập nhật này:

  1. Sử dụng SDK trình điều khiển: tuỳ chọn đơn giản nhất. Xem tài liệu về SDK Trình điều khiển cho Android hoặc iOS.
  2. Sử dụng mã tuỳ chỉnh: hữu ích nếu các vị trí được chuyển tiếp thông qua phần phụ trợ, hoặc nếu bạn sử dụng các thiết bị không phải là Android hoặc iOS. Hướng dẫn này sẽ trình bày phương pháp đó.

Nếu không dùng SDK trình điều khiển để cập nhật vị trí của xe, bạn có thể gọi trực tiếp đến Fleet Engine để cung cấp thông tin về vị trí của xe. Đối với mọi xe đang hoạt động, Bộ công cụ của đội xe dự kiến sẽ có thông tin cập nhật vị trí ít nhất một lần mỗi phút và nhiều nhất một lần mỗi 5 giây. Những bản cập nhật này chỉ yêu cầu các đặc quyền của Người dùng SDK Trình điều khiển Fleet Engine.

Ví dụ về cách cập nhật vị trí xe

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

Xem tham chiếu providers.vehicles.update.

Bước tiếp theo