แนวทาง
เพื่อให้ 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