تعديل الموقع الجغرافي لمركبة التسليم

الأساليب

لتحقيق أفضل أداء باستخدام 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

الخطوات التالية