للحصول على أفضل أداء مع Fleet Engine، يجب تزويدها بسلسلة من تحديثات الموقع الجغرافي للمركبة. يمكنك تقديم هذه التحديثات بإحدى الطريقتَين التاليتَين:
- استخدام Driver SDK: هذا هو الخيار الأبسط. راجِع مستندات Driver SDK لنظام التشغيل Android أو iOS.
- استخدام رمز مخصّص: يكون هذا الخيار مفيدًا إذا تم نقل المواقع الجغرافية من خلال الخلفية أو إذا كنت تستخدم أجهزة أخرى غير Android أو iOS. يتناول هذا الدليل هذا النهج.
إذا كنت لا تستخدم حزمة تطوير البرامج (SDK) للسائق من أجل تعديل الموقع الجغرافي للمركبة، يمكنك إجراء طلب مباشر إلى Fleet Engine يتضمّن الموقع الجغرافي للمركبة. بالنسبة إلى أي مركبة نشطة، تتوقّع Fleet Engine تلقّي تعديل على الموقع الجغرافي مرة واحدة على الأقل كل دقيقة ومرة واحدة على الأكثر كل 5 ثوانٍ. لا تتطلّب هذه التعديلات سوى امتيازات مستخدم حزمة Fleet Engine Driver SDK.
مثال على تعديل الموقع الجغرافي للمركبة
لتعديل الموقع الجغرافي لمركبة، يمكنك استخدام مكتبة Java gRPC أو REST، كما هو موضّح في المثال التالي. للحصول على قائمة كاملة باللغات المتوافقة، راجِع مكتبات البرامج لخدمات الرحلات عند الطلب.
جافا
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.