DriverTaipei - 智慧駕駛助手


圖片

專案起源

2015 臺大黑客松(2015-08-20 ~ 2015-08-23)比賽作品

在台北開車時,駕駛經常需要在多個 App 之間切換:用 Google Maps 看路況、用其他 App 找停車場、再用另一個 App 查詢加油站位置。這種體驗相當破碎且不便。

DriverTaipei 的理念是「一個 App 解決所有駕駛需求」,整合台北市政府開放資料,提供即時交通資訊查詢服務。

核心功能

1. 即時路況查詢

  • 整合台北市即時交通資訊 API
  • 顯示主要道路的車流量狀態
  • 標示施工路段與封閉路段
  • 推播重大交通事故通知

2. 智慧停車場搜尋

  • 台北市公有停車場即時車位資訊
  • 機車停車格位置查詢
  • 以目的地為中心搜尋附近停車場
  • 顯示費率資訊與營業時間

3. 加油站定位服務

  • GPS 定位查詢最近的加油站
  • 顯示品牌、營業時間、服務項目
  • 一鍵導航至選定的加油站

4. 施工與路況警示

  • 顯示道路施工資訊
  • 標示臨時交通管制區域
  • 建議替代路線

技術架構

移動端開發

  • Android (Java) - 原生 Android 開發
  • iOS (Swift) - 原生 iOS 開發
  • Google Maps SDK - 地圖與導航功能
  • GPS Location Service - 定位服務

後端服務

  • RESTful API - 提供資料查詢介面
  • 資料快取機制 - 減少 API 請求次數
  • 定時任務 - 每 5 分鐘更新一次即時資料

資料來源

整合台北市政府開放資料平台:

  • 台北市即時交通資訊
  • 停車場即時車位資訊
  • 加油站位置資料
  • 道路施工資訊

技術亮點

1. 高效能地圖渲染

大量的停車場、加油站、施工點位需要在地圖上顯示,直接渲染會造成效能問題。解決方案:

  • 使用 Marker Clustering 將相近的標記聚合
  • 根據地圖縮放層級動態載入標記
  • 實作虛擬化技術,只渲染可視範圍內的標記

2. 智慧推薦演算法

根據使用者的目的地和當前位置,計算最佳的停車場選擇:

評分 = (距離分數 × 0.4) + (剩餘車位分數 × 0.3) +
       (價格分數 × 0.2) + (使用者評價 × 0.1)

3. 離線地圖快取

為了在網路不穩定時也能使用:

  • 實作 LRU (Least Recently Used) 快取策略
  • 預先下載常用區域的地圖資料
  • 離線狀態下仍可查看已快取的資訊

開發挑戰

1. 跨平台一致性

同時開發 iOS 和 Android 版本,需要確保兩個平台的功能和體驗一致。解決方式是統一 API 設計,並制定詳細的 UI/UX 規範文件。

2. 即時資料同步

台北市的交通資料更新頻率高,需要設計高效的資料同步機制。採用增量更新策略,只傳輸變更的資料,減少流量消耗。

3. 電池續航最佳化

GPS 持續定位會快速消耗電量。最佳化方式:

  • 使用智慧定位策略(移動時高頻率,靜止時低頻率)
  • 背景狀態下降低更新頻率
  • 提供省電模式選項

黑客松經驗

在短短 72 小時內:

  • 完成產品設計與原型開發
  • 整合 4 個政府開放資料 API
  • 實作 Android 和 iOS 雙平台
  • 進行使用者測試與最佳化

這次經驗讓我學會如何在時間壓力下:

  • 快速決策與取捨功能
  • 團隊協作與分工
  • MVP (最小可行產品) 的開發思維

成果

  • 在 App Store 和 Google Play 上架
  • 累積超過 5,000 次下載
  • 使用者評分 4.2/5.0
  • 開源專案獲得 50+ Stars

連結