מעקב תחבורה בזמן אמת באפליקציות מובייל

כאשר מכשיר GPS ברכב מציג מסלול שקופץ בין רחובות מקבילים, המוקדנים מאבדים שליטה על המצב. אנחנו בונים מערכות מעקב הקובעות במדויק את מיקום הרכב, תוך התחשבות במהירות ובמסלול. הצוות שלנו מספק פרויקטים סוהריים—מבחירת מקורות נתונים ועד תצוגת מפה—תוך הבטחת פעולה אמינה ותמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
מעקב תחבורה בזמן אמת באפליקציות מובייל
מורכב
מ- 1 שבוע עד 3 חודשים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

אנו פותרים את הבעיה של מעקב תחבורה מדויק בזמן אמת

אנו פותרים את הבעיה של מעקב תחבורה מדויק בזמן אמת.

המהנדסים שלנו נתקלו במצבים שבהם רכב GPS על אוטובוס הציג מסלול שקופץ בין רחובות מקבילים, והמוקדן לא הצליח להבין היכן הרכב נמצא בפועל. הנהג כבר עבר את התחנה, אבל במפה הוא עדיין התקרב אליה. זו לא בעיית חומרה אלא תקלה בסינון ובהתאמת מפה. אנו מפתחים מערכות מעקב המשתמשות בנתונים מרכבי חומרה (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.

עבור אפליקציות המשתמשות בטלפון של הנהג (מוניות, תחבורה ארגונית) — אותו מחסן טכנולוגי כמו מעקב שליחים אך מותאם למהירות התנועה.

השוואה בין סוגי רכבי מעקב

סוג התקנים לדוגמה פרוטוקול תדירות עדכון עלות (התקנה לכל רכב)
חומרה 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 אופקית קטנה יותר מאשר בעיר עם בניינים גבוהים, אבל יש בעיה אחרת: בפניות חדות, הסמן עשוי "לעקוף" את מיקום הרכב בפועל בגלל עיכוב בעדכון. מסנן Kalman מחליק את העיכוב הזה.

יישום פשוט של מסנן Kalman לקואורדינטות ב-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 או באמצעות 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 } עם CLLocationManager — Apple מיישמת מסנן משלה.

התאמת מפה: באיזה שירות לבחור?

אוטובוס מתוזמן נוסע במסלול קבוע — נקודות GPS בין תחנות חייבות להיות בדיוק על המסלול הזה, לא לקפוץ לרחוב מקביל. התאמת מפה: אנו לוקחים רצף של נקודות GPS ו"מדביקים" אותן לקטע כביש הקרוב ביותר בגרף הדרכים.

OSRM מתארח עצמאית: CLActivityType.automotiveNavigation. מחזיר מסלול מותאם עם נקודות ציון. לפי תיעוד OSRM, זמן השהייה באירוח עצמי הוא < 20 אלפיות שנייה, וזה מקובל לזמן אמת.

Google Roads API GET /match/v1/driving/{coordinates}?radiuses={radiuses}&geometries=geojson — קל יותר לשילוב אבל בתשלום ($5 לכל 1000 קריאות) ומוגבל ל-100 נקודות לכל בקשה.

השוואה בין OSRM ל-Google Roads API

פרמטר OSRM מתארח עצמאית Google Roads API
עלות חינם (שרת) $5 לכל 1000 קריאות
זמן שהייה < 20 אלפיות שנייה ~100 אלפיות שנייה
מגבלות אין 100 נקודות/בקשה
שליטה מלאה חיצונית

מסקנה: לשימוש תכוף (1000+ כלי רכב), OSRM מתארח עצמאית זול פי 250 ומהיר פי 5.

כיצד להבטיח אנימציית תנועה חלקה?

הסמן של האוטובוס/משאית הוא PNG או SVG מותאם אישית עם סיבוב לפי כיוון התנועה. כיוון במעלות: snapToRoads. ב-Android — atan2(dLon, dLat) * 180 / PI עם סיבוב באמצעות BitmapDescriptorFactory.fromBitmap(rotatedBitmap). ב-iOS — Matrix.postRotate() עם GMSMarker, סיבוב באמצעות iconView.

המסלול הוא קו פוליגון. Google Directions API לחישוב או קבצי shapes.txt של GTFS שנשמרו מראש. במפה — CGAffineTransform(rotationAngle:) / GMSPolyline עם צבע ורוחב מותאמים אישית. הקטע שעבר הוא בצבע שונה (לדוגמה, אפור במקום כחול).

אנימציית תנועה — אינטרפולציה בין נקודות. מרווח העדכון של רכב GPS הוא בדרך כלל 30-60 שניות, לא 5. זה אומר שהסמן צריך לנוע בצורה חלקה במשך 30 שניות מנקודה אחת לאחרת, לא לקפוץ. Polyline ב-Android עם ValueAnimator, LinearInterpolator ב-iOS.

צד השרת: כיצד להבטיח מדרגיות?

עבור צי של 50-200 כלי רכב — Socket.IO או WebSocket על Node.js. השרת מאחסן מיקומים נוכחיים ב-Redis עם TTL. הלקוח נרשם לערוץ CADisplayLink ומקבל עדכונים עבור כל כלי הרכב בקבוצה כל 10-15 שניות במקום אירועים בודדים — חוסך 80% תעבורה.

עבור ציים גדולים (1000+ כלי רכב) — ברוקר MQTT עם נושאים fleet/updates. הלקוח נרשם רק לכלי הרכב שמעניינים אותו.

אחסון מסלולים היסטוריים: PostgreSQL + PostGIS לשאילתות גיאו-מרחביות ("הצג את כל כלי הרכב שעברו באזור X אתמול"), TimescaleDB למדדים סדרתיים (מהירות, דלק).

מה כלול בעבודה?

  • בדיקת מקור נתונים: רכב/טלפון/GTFS — קביעת סוג ופרוטוקול.
  • עיצוב אוטובוס השרת ובחירת מחסן טכנולוגי (MQTT/WebSocket/Redis).
  • יישום לקוח נייד: סמנים, מסלולים, אנימציה, מצבים.
  • שילוב התאמת מפה (OSRM מתארח עצמאית או Google Roads).
  • בדיקת עומס עם סימולציית תעבורה עד 1000 כלי רכב.
  • תיעוד API ותצורה.
  • הדרכת מוקדנים (שעה אחת).
  • שבועיים של תמיכה לאחר ההשקה.

לוח זמנים לפיתוח — בין 2 ל-6 שבועות בהתאם למקור הנתונים, מספר הפלטפורמות וגודל הצי. מהנדסים מוסמכים עם ניסיון של 5+ שנים מבטיחים פעולה יציבה. עלות יישום ממוצעת לצי של 20 כלי רכב מתחילה מ-$4.5k–6.5k. אנו נעריך את הפרויקט שלך — צור קשר! בקש פיתוח מעקב — צור קשר לייעוץ.

מידע נוסף על הגדרת MQTT להעברת נתונים אמינה, השתמש בברוקר Mosquitto עם הצפנת TLS. הגדר QoS=1 להבטחת מסירה ודגלי retain למיקום האחרון הידוע.