Yaklaşımlar
Fleet Engine'in en iyi performansı göstermesi için en az dakikada bir ve en fazla 5 saniyede bir araç konumu güncellemesi akışı sağlayın. Bu güncellemeleri sağlamak için aşağıdaki yöntemlerden birini kullanın:
- Sürücü SDK'sını kullanma: En basit seçenektir.
- Özel kod kullanın: Konumlar arka uçunuz üzerinden aktarılıyorsa veya Android ya da iOS dışında cihazlar kullanıyorsanız kullanışlıdır. Bu dokümanda bu yaklaşım ele alınmaktadır.
Araç konumu güncellemelerini nasıl sağladığınızdan bağımsız olarak, bir teslimat aracı bir durağa giderken ve duraktayken Fleet Engine'i güncellemekten arka uç sunucunuz sorumludur. Deponun kendisi de buna dahildir. Fleet Engine bu etkinlikleri otomatik olarak algılamaz.
Araç konumunu güncelleme örnekleri
Fleet Engine'da bir aracın konumunu güncellemek için Java gRPC kitaplığını veya REST'i kullanabilirsiniz.
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
Talep ayıntıları
İstek metni, alanları aşağıdaki gibi belirten bir DeliveryVehicle
öğesi içermelidir:
Zorunlu alanlar:
Alan Değer lastLocation.supplementalLocation
Aracın konumu. lastLocation.supplementalLocationTime
Aracın bu konumda bulunduğu bilinen son zaman damgası. lastLocation.supplementalLocationSensor
CUSTOMER_SUPPLIED_LOCATION
ile doldurulmalıdır.İsteğe bağlı alanlar:
Alan Değer lastLocation.supplementalLocationAccuracy
Sağlanan konumun doğruluğu (metre cinsinden).
# 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