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

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

  1. Sử dụng Driver SDK: lựa chọn đơn giản nhất. Xem tài liệu về Driver SDK 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 Driver SDK để cập nhật vị trí của xe, bạn có thể gọi trực tiếp đến Fleet Engine bằng vị trí của xe. Đối với mọi xe đang hoạt động, Fleet Engine dự kiến sẽ nhận được thông tin cập nhật vị trí ít nhất 1 lần mỗi phút và tối đa 1 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 Fleet Engine Driver SDK.

Ví dụ về cách cập nhật vị trí của 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 tài liệu tham khảo providers.vehicles.update.

Bước tiếp theo