الأساليب
لتحقيق أفضل أداء باستخدام Fleet Engine، يجب تزويده بسلسلة من آخر المواقع الجغرافية للمركبة مرة واحدة على الأقل كل دقيقة ومرة واحدة على الأكثر كل 5 ثوانٍ. استخدِم إحدى الطريقتَين التاليتَين لتقديم هذه التعديلات:
- **استخدام حزمة تطوير البرامج (SDK) الخاصة بالسائقين**: هذا هو الخيار الأبسط.
- استخدام رمز مخصّص: يكون هذا الخيار مفيدًا إذا تم نقل المواقع الجغرافية من خلال نظامك الخلفي، أو إذا كنت تستخدم أجهزة غير أجهزة Android أو iOS. ويتناول هذا المستند هذا الأسلوب.
بغض النظر عن طريقة تقديم آخر المواقع الجغرافية للمركبة، يكون نظامك الخلفي مسؤولاً عن تعديل Fleet Engine عندما تكون مركبة التوصيل في طريقها إلى محطة وعند وصولها إليها. ويشمل ذلك المستودع نفسه. لا يرصد Fleet Engine هذه الأحداث تلقائيًا.
أمثلة على تعديل الموقع الجغرافي للمركبة
لتعديل الموقع الجغرافي لمركبة في Fleet Engine، يمكنك استخدام مكتبة Java gRPC أو 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