Розробка трекінгу транспорту в мобільному застосунку

Ми вирішуємо проблему точного трекінгу транспорту в реальному часі Наші інженери стикалися з ситуацією, коли GPS-трекер на автобусі показував маршрут, що стрибає по паралельних вулицях, а диспетчер не міг зрозуміти, де машина насправді. Водій уже проїхав зупинку, а на карті — тільки під'їжджає. Ц

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка трекінгу транспорту в мобільному застосунку
Складний
від 1 тижня до 3 місяців

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Ми вирішуємо проблему точного трекінгу транспорту в реальному часі

Наші інженери стикалися з ситуацією, коли GPS-трекер на автобусі показував маршрут, що стрибає по паралельних вулицях, а диспетчер не міг зрозуміти, де машина насправді. Водій уже проїхав зупинку, а на карті — тільки під'їжджає. Це не проблема заліза, а помилка фільтрації та map matching. Ми розробляємо системи трекінгу, які використовують дані апаратних трекерів (Teltonika, Queclink, Galileosky) або GTFS Realtime, і накладають їх на карту з урахуванням швидкості, маршруту та рельєфу. Досвід роботи з парками від 50 до 1000 машин дозволяє нам гарантувати точність позиціонування з похибкою не більше 5 метрів.

Які джерела даних ми використовуємо?

Для логістичних компаній та управління парком транспортний засіб — це апаратний GPS-трекер (Teltonika FMB920, Queclink GV350, Galileosky), а не телефон водія. Трекер надсилає пакети по MQTT або HTTP-протоколу на сервер. Додаток виступає тільки як візуалізатор даних, а не як джерело.

Якщо завдання — показувати громадський транспорт за даними GTFS Realtime (стандарт Google), то джерело — відкриті API міських транспортних операторів. Формат — Protocol Buffers (transit_realtime.FeedMessage), парсинг через бібліотеку gtfs-realtime-bindings.

Для додатків з телефоном водія (таксі, корпоративний транспорт) — той самий стек, що у кур'єрського трекінгу, але з поправками на швидкість руху.

Таблиця порівняння типів трекерів

Тип Приклади пристроїв Протокол Частота оновлення Вартість (установка на 1 машину)
Апаратний Teltonika FMB920, Queclink GV350 MQTT, Wialon 10-60 секунд $50-$150
Зі смартфона Будь-який Android/iOS REST, WebSocket 5-30 секунд $0 (тільки софт)
GTFS Realtime - HTTP, Protocol Buffers 1-60 секунд $0 (відкриті дані)

GPS-фільтрація на високих швидкостях: як прибрати дрейф?

На швидкості 80-120 км/год горизонтальний GPS-дрейф менший, ніж у місті з багатоповерхівками, але інша проблема: при різких поворотах маркер може «обганяти» реальне положення машини через затримку оновлення. Калман-фільтр згладжує цю затримку.

Проста реалізація фільтра Калмана для координат на Kotlin:

class KalmanFilter(private var accuracy: Float = 1f) { private var lat = 0.0 private var lon = 0.0 private var variance = -1f fun process(lat: Double, lon: Double, accuracy: Float, timestamp: Long): LatLng { if (variance < 0) { this.lat = lat; this.lon = lon; variance = accuracy * accuracy } else { val dt = (timestamp - lastTimestamp) / 1000f variance += dt * 3f * 3f // швидкість зміни 3 m/s val k = variance / (variance + accuracy * accuracy) this.lat += k * (lat - this.lat) this.lon += k * (lon - this.lon) variance *= (1 - k) } lastTimestamp = timestamp return LatLng(this.lat, this.lon) } private var lastTimestamp = 0L } 

На iOS аналогічна реалізація в Swift або використання CLLocationManager з CLActivityType.automotiveNavigation — Apple застосовує власний фільтр.

Map Matching: який сервіс обрати?

Рейсовий автобус їде по фіксованому маршруту — GPS-точки між зупинками повинні лежати строго на цьому маршруті, а не стрибати на паралельну вулицю. Map matching: беремо послідовність GPS-точок і «притискаємо» їх до найближчої ділянки дорожнього графа.

OSRM self-hosted: GET /match/v1/driving/{coordinates}?radiuses={radiuses}&geometries=geojson. Повертає matched-трек з waypoints. Згідно з документацією OSRM, latency при self-hosting становить < 20 мс, що прийнятно для реального часу.

Google Roads API snapToRoads — простіше в інтеграції, але платно (5$ за 1000 викликів) і обмежено 100 точками за запит.

Порівняння OSRM vs Google Roads API

Параметр OSRM self-hosted Google Roads API
Вартість Безкоштовно (сервер) $5 за 1000 викликів
Latency < 20 мс ~100 мс
Обмеження Немає 100 точок/запит
Контроль Повний Зовнішній

Висновок: для частого використання (1000+ машин) OSRM self-hosted у 250 разів дешевший і в 5 разів швидший.

Як забезпечити плавну анімацію руху?

Маркер автобуса/вантажівки — кастомний PNG або SVG з поворотом за напрямком руху. Напрямок у градусах: atan2(dLon, dLat) * 180 / PI. На Android — BitmapDescriptorFactory.fromBitmap(rotatedBitmap) з поворотом через Matrix.postRotate(). На iOS — GMSMarker з iconView, поворот через CGAffineTransform(rotationAngle:).

Маршрут — полілінія. Google Directions API для розрахунку або заздалегідь збережений GTFS shapes.txt. На карті — GMSPolyline / Polyline з кастомним кольором та товщиною. Пройдена ділянка — інший колір (наприклад, сірий замість синього).

Анімація руху — інтерполяція між точками. Інтервал оновлення GPS-трекера зазвичай 30-60 секунд, а не 5. Це означає, що маркер повинен плавно рухатися 30 секунд від однієї точки до іншої, а не стрибати. ValueAnimator на Android з LinearInterpolator, CADisplayLink на iOS.

Серверна частина: як забезпечити масштабування?

Для парку з 50-200 машин — Socket.IO або WebSocket на Node.js. Сервер зберігає актуальні позиції в Redis з TTL. Клієнт підписується на канал fleet/updates і отримує оновлення всіх машин пачкою кожні 10-15 секунд замість індивідуальних подій — економить трафік на 80%.

Для великих парків (1000+ машин) — MQTT broker з топіками vehicle/{id}/gps. Клієнт підписується тільки на цікаві машини.

Історичне зберігання маршрутів: PostgreSQL + PostGIS для геопросторових запитів («покажи всі машини, що проїхали через зону X вчора»), TimescaleDB для time-series метрик (швидкість, паливо).

Що входить в роботу?

  • Аудит джерела даних: трекер/телефон/GTFS — визначаємо тип і протокол.
  • Проектування серверної шини та вибір стеку (MQTT/WebSocket/Redis).
  • Реалізація мобільного клієнта: маркери, маршрути, анімація, стани.
  • Інтеграція map matching (OSRM self-hosted або Google Roads).
  • Навантажувальне тестування з емуляцією трафіку до 1000 машин.
  • Документація з API та налаштування.
  • Навчання диспетчерів (1 година).
  • Підтримка 2 тижні після запуску.

Термін розробки — від 2 до 6 тижнів залежно від джерела даних, кількості платформ та масштабу парку. Сертифіковані інженери з досвідом 5+ років гарантують стабільну роботу. Середня вартість впровадження для парку з 20 машин — від 500 000 рублів. Оцінимо ваш проект безкоштовно — напишіть нам! Замовте розробку трекінгу — зв'яжіться з нами для консультації.

Детальніше про налаштування MQTT Для надійної передачі даних використовуйте брокер Mosquitto з TLS-шифруванням. Налаштуйте QoS=1 для гарантії доставки та retain-флаги для останнього відомого положення.