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