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

المناهج

للحصول على أفضل أداء باستخدام Fleet Engine، ننصحك بتوفير مجموعة من المركبات. يتم تحديث الموقع الجغرافي مرة واحدة على الأقل كل دقيقة أو مرة واحدة على الأكثر كل 5 ثوانٍ. استخدِم إحدى الطريقتَين التاليتَين لتقديم هذه التعديلات:

  • استخدام Driver SDK: الخيار الأبسط.
  • استخدام رمز مخصّص: يكون هذا الإجراء مفيدًا إذا كان يتمّ ترحيل المواقع الجغرافية من خلال الخلفية، أو إذا كنت تستخدم أجهزة غير Android أو iOS. يتناول هذا المستند ما يلي الخاص بك.

وبغض النظر عن كيفية توفير تحديثات الموقع الجغرافي للمركبة، سيتم حفظ الخلفية مسئولة عن تحديث 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;
  }

راحة

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

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