Để 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í xe. Sử dụng một trong những cách sau để cung cấp thông tin cập nhật này:
- 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.
- Sử dụng mã tuỳ chỉnh: hữu ích nếu vị trí được chuyển tiếp thông 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 là 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 mong đợi 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 thông tin cập nhật này chỉ yêu cầu đặc quyền Người dùng Driver SDK của Fleet Engine.
Ví dụ về cách cập nhật vị trí xe
Để cập nhật vị trí 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 Thư viện ứng dụng cho các 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
}
EOMXem tài liệu tham khảo về providers.vehicles.update.