ITS Maps

Firebase Hosting / PWA

Metode WebApp ITS Maps

Halaman ini membedah renderer TypeScript, service worker, Firebase rules, dan pipeline AI browser RF-DETR yang menjadi basis website dan PWA.

Preview WebApp ITS Maps
Fitur

Fitur utama yang dibahas

Peta realtime

Leaflet/CARTO/OSM, marker device, POI, mode 2D/3D/satelit, dan lokasi user.

AI RF-DETR

Deteksi object dari snapshot/video, bbox, confidence, history, dan publikasi ringkasan ke RTDB.

PWA

Manifest, service worker, app-update metadata, notification click, dan install surface.

Dokumentasi

Route /documentation, /method, /method/webapp, /licence, dan print A4.

Context-aware notification

Metode peringatan perjalanan dan batas platform web

Persetujuan eksplisit

Pemantauan baru dimulai setelah pengguna mengaktifkan Peringatan perjalanan dan memberikan izin lokasi serta notifikasi. Menonaktifkan fitur menghentikan pemantauan; izin platform juga dapat dicabut kapan saja dari pengaturan browser.

Konteks GPS lokal

Saat fitur aktif, browser diminta memakai GPS berakurasi tinggi. Kecepatan, arah perjalanan, kelas moda yang bersifat perkiraan, dan dwell atau berhenti lama diturunkan di perangkat dari sampel terbaru. Klasifikasi moda adalah petunjuk kontekstual, bukan identifikasi kendaraan yang pasti.

Retry dua menit

Event konteks ringkas yang gagal dikirim dapat masuk ke outbox IndexedDB selama paling lama dua menit. Background Sync hanya dipakai sebagai progressive enhancement untuk mencoba ulang ketika koneksi kembali; dukungan dan waktu eksekusinya tetap ditentukan browser.

Suara dan background

Teks-ke-suara untuk mode motor hanya dapat diputar ketika halaman aplikasi aktif dan terlihat. Saat aplikasi berada di background atau tertutup, Web Push hanya dapat meminta notifikasi serta suara atau getaran bawaan sistem operasi, bukan TTS kustom yang andal.

Alur peringatan hanya memakai konteks turunan yang diperlukan untuk peringatan dan retry singkat. Alur ini tidak mengirim atau menyimpan raw frame kamera maupun riwayat sampel lokasi mentah.

Diagram

Alur runtime WebApp

flowchart LR
  RTDB[("Firebase RTDB")] --> Main["web/src/main.ts"]
  Main --> Map["Leaflet / MapLibre map"]
  Main --> Camera["Camera surface"]
  Camera --> AI["browserRfDetr.ts"]
  AI --> Overlay["Canvas bbox + confidence"]
  Main --> PWA["Service worker + install"]
  Main --> Docs["/documentation + /method"]
Matematika dan logika

Formulasi yang dipakai kode

Status realtime

Perangkat dianggap online jika selisih waktu heartbeat masih di bawah ambang offline.

\[\Delta t=t_{now}-t_{lastSeen}\]
\[online(d)=\begin{cases}1,&\Delta t\le T_{offline}\\0,&\Delta t>T_{offline}\end{cases}\]

Total kendaraan

Tile kendaraan menampilkan jumlah kelas yang sama di WebApp, APK, dan Windows widget.

\[N=N_{mobil}+N_{motor}+N_{bus}+N_{truk}+N_{sepeda}\]

Proyeksi bounding box

AI menggambar kotak deteksi dengan skala dari frame sumber ke canvas/tampilan.

\[x'=x\cdot\frac{W_{view}}{W_{src}},\quad y'=y\cdot\frac{H_{view}}{H_{src}}\]
\[w'=w\cdot\frac{W_{view}}{W_{src}},\quad h'=h\cdot\frac{H_{view}}{H_{src}}\]

IoU dan NMS

Deteksi ganda ditekan dengan Intersection over Union agar satu objek tidak dihitung berkali-kali.

\[IoU(A,B)=\frac{|A\cap B|}{|A\cup B|}\]
\[score'=score\cdot e^{-\frac{IoU^2}{\sigma}}\]

Grafik realtime

History grafik dibatasi ke jendela data terbaru supaya widget tetap terbaca.

\[H_t=tail_k(H_{t-1}\cup\{(t,N,color,seconds)\})\]

Jarak Haversine

Dipakai untuk memperkirakan jarak user, POI, dan device pada peta.

\[a=\sin^2\frac{\Delta\phi}{2}+\cos\phi_1\cos\phi_2\sin^2\frac{\Delta\lambda}{2}\]
\[d=2R\cdot atan2(\sqrt a,\sqrt{1-a})\]

Contoh kode yang bisa dijalankan

Contoh ini menjalankan rumus kecil yang sama konsepnya dengan kode aplikasi: freshness, total kendaraan, IoU, dan durasi lampu.

const total = car + motorcycle + bus + truck + bicycle;
const green = Math.min(120, Math.max(10, 0.85 * total + 8));
Tekan salah satu tombol Run.

Pada kode WebApp, rumus ini terlihat di browserRfDetr.ts untuk bbox/IoU dan di main.ts/windows.ts untuk status realtime, chart, jarak, dan render UI.

Screenshots

Gambar pendukung

Screenshot utama WebApp ITS Maps
Screenshot utama WebApp ITS Maps
Screenshot mobile map ITS Maps
Screenshot mobile map ITS Maps
Screenshot mobile AI ITS Maps
Screenshot mobile AI ITS Maps
Mockup kamera AI
Mockup kamera AI
Line-by-line source atlas

Atlas kode WebApp

Ringkasan file tetap tersedia di halaman utama. Isi kode asli dan catatan teknis per baris dimuat hanya saat diminta agar dokumentasi cepat dibuka dan tetap dapat dipelajari secara lengkap.

File Baris Baris logika Simbol utama
web/src/main.ts 22.809 21.129 Simbol utama L22 BrowserRfDetrDetectionL23 BrowserRfDetrResultL40 TravelContextUpdateL64 TravelModeSourceL81 NotificationChatContextL86 MicrosoftStorePublicSnapshotL96 MapDetailFeatureCollectionL101 TransitEndpointMemberCandidateL102 VerifiedTransitEndpointL108 PoiIconDefinitionL127 initializeAppL135 scheduleNavigation3DL136 loadL137 importL152 ItsWebMcpToolL160 ItsWebMcpModelContextL167 ItsWebMcpHostL181 profileAssetUrlL187 escapeMapServiceHtmlL236 mapServiceStackHtmlL246 aiServiceStackHtmlL256 infoStackHtmlL269 MapL273 MapOptions
web/src/browserRfDetr.ts 1.638 1.538 Simbol utama L54 ImageSourceL55 DetectorCanvasL56 DetectorImageInputL57 RfDetrOutputL58 RfDetrPipelineL108 CapturedFrameL115 DetectionCropL120 DetectionTrackL258 RfDetrWorkerRunRequestL264 RfDetrWorkerWarmRequestL275 resolvePublicAssetUrlL284 browserRfDetrModelUrlL288 vehicleBreakdownFromRfDetrDetectionsL297 ifL298 ifL299 ifL300 ifL306 canonicalDetectionLabelL311 activeModelIsRfDetrL315 displayDetectionLabelL320 titleCaseLabelL331 detectionColorForL340 detectionFillForL349 mixHexColor
web/src/browserRfDetrWorker.ts 57 49 Simbol utama L4 BrowserRfDetrResultL5 BrowserRfDetrRunOptionsL8 WorkerRunRequestL16 WorkerWarmRequestL21 WorkerRequestL23 WorkerResponseL32 handleRequestL36 warmBrowserRfDetr
web/src/lockScreenDetector.ts 612 578 Simbol utama L6 BrowserRfDetrDetectionL7 BrowserRfDetrResultL10 LockScreenBridgeL15 SnapshotHistoryL22 SlotIdentityL39 bridgeL43 setStatusL47 detectionPayloadL53 slotIdentityL64 emitStatusL70 emitResultL83 loadHistoryL92 quickDetectionResultL114 quickDetectObjectsL191 yL234 areaRatioL267 quickDetectionWorthReportingL274 tightenQuickBoxL300 brightnessL323 inflateQuickBoxL337 quickOverlapL347 quickContainedL357 QuickBoxStatsL370 quickBoxStats
web/src/style.css 17.574 14.706 Simbol utama L14016 minmaxL14503 minmaxL15468 minmaxL16207 minmaxL16488 minmax
web/sw.js 289 270 Simbol utama L45 basePresentationManifestL99 readPresentationRecentsL108 presentationManifestResponseL202 safeNotificationUrlL218 normalizedPushPayload
web/public/sw.js 489 456 Simbol utama L70 openPushOutboxL82 readTravelContextOutboxL97 deleteTravelContextOutboxL112 flushTravelContextOutboxL116 deleteTravelContextOutboxL128 deleteTravelContextOutboxL132 basePresentationManifestL186 readPresentationRecentsL195 presentationManifestResponseL300 safeNotificationUrlL321 notificationTextL326 safeNotificationAssetL342 normalizedPushPayloadL368 notificationChatUrlL386 safeNotificationUrlL396 notificationChatUrl
web/firebase.json 668 667 template / konfigurasi
web/database.rules.json 174 173 template / konfigurasi
web/vite.config.ts 37 33 template / konfigurasi
web/index.html 1.808 1.179 template / konfigurasi
web/src/main.ts 22.809 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/src/browserRfDetr.ts 1.638 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/src/browserRfDetrWorker.ts 57 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/src/lockScreenDetector.ts 612 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/src/style.css 17.574 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/sw.js 289 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/public/sw.js 489 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/firebase.json 668 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/database.rules.json 174 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/vite.config.ts 37 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
web/index.html 1.808 baris
Atlas lengkap tersedia sesuai permintaan Belum dimuat
User download

Link aplikasi

Microsoft Store

ITS Maps Windows

Store ID: 9MWFGGW3FD2C. Deep link web tersedia setelah produk live.

QR code QR Microsoft Store QR Microsoft Store
Buka Microsoft Store app
Credits

Ucapan terima kasih

Hanifa Septhi Larasati @hanifasepthi Developer utama, publisher Hanifa Teams, dan pemilik repository ITS Maps.
Roboflow RF-DETR roboflow/rf-detr Rujukan arsitektur object detection RF-DETR untuk pipeline deteksi visual.
Transformers.js / Xenova transformers.js Runtime inference JavaScript untuk model AI di browser.
OpenStreetMap, OpenMapTiles, OpenFreeMap, Leaflet, MapLibre, CARTO, Firebase, Microsoft, AndroidEkosistem peta vector, fallback raster, hosting realtime, web, widget, dan distribusi aplikasi.