Araç konumunu güncelleme

Fleet Engine'de en iyi performansı elde etmek için araç konumu güncellemelerini akış olarak sağlayın. Bu güncellemeleri sağlamak için aşağıdaki yöntemlerden birini kullanın:

  1. Sürücü SDK'sını kullanma: En basit seçenektir. Android veya iOS için Sürücü SDK'sı belgelerine bakın.
  2. Özel kod kullanma: Konumlar arka ucunuz üzerinden aktarılıyorsa veya Android ya da iOS dışındaki cihazları kullanıyorsanız yararlıdır. Bu kılavuzda bu yaklaşım ele alınmaktadır.

Aracın konumunu güncellemek için Sürücü SDK'sını kullanmıyorsanız aracın konumuyla Fleet Engine'i doğrudan çağırabilirsiniz. Fleet Engine, etkin araçlar için en az dakikada bir ve en fazla 5 saniyede bir konum güncellemesi bekler. Bu güncellemeler için yalnızca Fleet Engine Sürücü SDK'sı Kullanıcısı ayrıcalıkları gerekir.

Araç konumunu güncelleme örneği

Araç konumunu güncellemek için aşağıdaki örnekte gösterildiği gibi Java gRPC kitaplığını veya REST'i kullanabilirsiniz. Desteklenen dillerin tam listesi için Talep üzerine gezi hizmetleri için istemci kitaplıkları başlıklı makaleye bakın.

Java

static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";

VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);

String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
    .setLastLocation(VehicleLocation.newBuilder()
        .setSupplementalLocation(LatLng.newBuilder()
            .setLatitude(37.3382)
            .setLongitude(121.8863))
        .setSupplementalLocationTime(now())
        .setSupplementalLocationSensor(LocationSensor.CUSTOMER_SUPPLIED_LOCATION)
        .setSupplementalLocationAccuracy(DoubleValue.of(15.0)))  // Optional
    .build();

UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
    .setName(vehicleName)
    .setVehicle(updatedVehicle)
    .setUpdateMask(FieldMask.newBuilder()
        .addPaths("last_location"))
    .build();

try {
  Vehicle updatedVehicle =
      vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:
      // Most implementations will call CreateVehicle in this case
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}
// If no Exception, Vehicle updated successfully.

REST

curl -X PUT \
  "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=last_location" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  --data-binary @- << EOM
{
    "supplementalLocation": {"latitude": 12.1, "longitude": 14.5},
    "supplementalLocationTime": "$(date -u --iso-8601=seconds)",
    "supplementalLocationSensor": "CUSTOMER_SUPPLIED_LOCATION",
    "supplementalLocationAccuracy": 15
}
EOM

providers.vehicles.update referansına bakın.

Sırada ne var?