อัปเดตตำแหน่งยานพาหนะที่นำส่ง

แนวทาง

ด้วยเครื่องยนต์ Fleet Engine เพื่อประสิทธิภาพที่ดีที่สุด อัปเดตตำแหน่งอย่างน้อย 1 ครั้งทุกนาที และอย่างน้อย 1 ครั้งทุก 5 วินาที ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อแจ้งการอัปเดต

  • ใช้ Driver SDK: ตัวเลือกที่ง่ายที่สุด
  • ใช้โค้ดที่กำหนดเอง: มีประโยชน์หากมีการส่งต่อตำแหน่งผ่านแบ็กเอนด์ของคุณ หรือถ้าใช้อุปกรณ์อื่นที่ไม่ใช่ Android หรือ iOS เอกสารนี้ครอบคลุมถึง ของเรา

ไม่ว่าคุณจะอัปเดตตำแหน่งของรถด้วยวิธีใด แบ็กเอนด์ของคุณจะ มีหน้าที่อัปเดต Fleet Engine เมื่อรถส่งของกำลังเปลี่ยนเส้นทางไปยัง และเมื่อรถมาถึงป้ายหยุด ซึ่งรวมถึงตัวสถานีด้วย เครื่องยนต์ในยานพาหนะ ไม่ตรวจจับเหตุการณ์เหล่านี้โดยอัตโนมัติ

อัปเดตตัวอย่างตำแหน่งของยานพาหนะ

คุณใช้ไลบรารี Java gRPC เพื่ออัปเดตตำแหน่งของรถใน Fleet ได้ Engine หรือใช้ 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

ขั้นตอนถัดไป