مکان وسیله نقلیه تحویل را به‌روزرسانی کنید

رویکردها

برای بهترین عملکرد با 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

قدم بعدی چیست؟