رویکردها
برای بهترین عملکرد با Fleet Engine، حداقل هر دقیقه یک بار و حداکثر هر ۵ ثانیه یک بار، بهروزرسانیهای موقعیت مکانی خودرو را در اختیار آن قرار دهید. برای ارائه این بهروزرسانیها از یکی از روشهای زیر استفاده کنید:
- از گزینه Driver SDK : Simplest استفاده کنید .
- استفاده از کد سفارشی : اگر مکانها از طریق backend شما منتقل میشوند، یا اگر از دستگاههایی غیر از اندروید یا iOS استفاده میکنید، مفید است. این سند این رویکرد را پوشش میدهد.
صرف نظر از نحوه ارائه بهروزرسانیهای موقعیت مکانی خودرو، بخش پشتیبانی شما مسئول بهروزرسانی Fleet Engine هنگام حرکت وسیله نقلیه تحویلدهنده به سمت ایستگاه و هنگام رسیدن به ایستگاه است. این شامل خود انبار نیز میشود. Fleet Engine این رویدادها را به طور خودکار تشخیص نمیدهد.
بهروزرسانی نمونههای موقعیت مکانی خودرو
شما میتوانید از کتابخانه جاوا gRPC برای بهروزرسانی موقعیت مکانی خودرو در Fleet Engine استفاده کنید، یا از REST بهره ببرید.
جاوا
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
.setLastLocation(DeliveryVehicleLocation.newBuilder()
.setSupplementalLocation(LatLng.newBuilder()
.setLatitude(37.3382)
.setLongitude(121.8863))
.setSupplementalLocationTime(now())
.setSupplementalLocationSensor(DeliveryVehicleLocationSensor.CUSTOMER_SUPPLIED_LOCATION)
.setSupplementalLocationAccuracy(DoubleValue.of(15.0))) // Optional
.build();
// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
UpdateDeliveryVehicleRequest.newBuilder() // No need for the header
.setName(vehicleName)
.setDeliveryVehicle(myDeliveryVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("last_location"))
.build();
try {
DeliveryVehicle updatedDeliveryVehicle =
deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
استراحت
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=last_location
درخواست جزئیات
بدنه درخواست باید شامل یک موجودیت DeliveryVehicle باشد که فیلدهای آن به شرح زیر است:
فیلدهای مورد نیاز:
میدان ارزش lastLocation.supplementalLocationمحل قرارگیری وسیله نقلیه. lastLocation.supplementalLocationTimeآخرین زمان ثبت شده برای وسیله نقلیه در این مکان بوده است. lastLocation.supplementalLocationSensorباید با CUSTOMER_SUPPLIED_LOCATIONپر شود.فیلدهای اختیاری:
میدان ارزش lastLocation.supplementalLocationAccuracyدقت مکان ارائه شده، بر حسب متر.
# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"lastLocation": {
"supplementalLocation": {"latitude": 12.1, "longitude": 14.5},
"supplementalLocationTime": "$(date -u --iso-8601=seconds)",
"supplementalLocationSensor": "CUSTOMER_SUPPLIED_LOCATION",
"supplementalLocationAccuracy": 15
}
}
EOM