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 báo cập nhật vị trí của xe. Hãy sử dụng một trong các cách sau để cung cấp những thông tin cập nhật này:

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

Nếu không sử dụng SDK trình điều khiển để cập nhật vị trí của xe, bạn có thể thực hiện gọi trực tiếp đến Fleet Engine với vị trí của xe. Đối với mọi xe đang hoạt động, Fleet Engine dự kiến sẽ cập nhật vị trí ít nhất một lần mỗi phút và tối đa một lần mỗi 5 giây. Những nội dung cập nhật này chỉ yêu cầu đặc quyền 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

Để cập nhật vị trí của xe, bạn có thể sử dụng thư viện gRPC Java hoặc REST, như trong ví dụ sau. Để xem danh sách đầy đủ các ngôn ngữ được hỗ trợ, hãy xem bài viết Thư viện ứng dụng cho dịch vụ chuyến đi theo yêu cầu.

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 tài liệu tham khảo về providers.vehicles.update.

Bước tiếp theo