2016-03-07 58 views
0

我正在開發一個應用程序,要求記錄用戶的路徑並進行測量。我已經熟悉利用onLocationChanged來接收位置更改更新,但我怎樣才能使用這些位置點來創建一條完整的路徑,包括從一個位置到另一個位置的整個行程?如何隨用戶更改位置生成路徑

我想我可以利用每個位置作爲一個點傳遞,只需連接所有點與多段線,但在我看來,這將是一個奇怪的和稍微難看的線(因爲位置近似不是總是超級準確)。

我得到的另一個想法是獲得用戶旅行的每條街道,然後最終連接它們,但我甚至不確定我會如何執行此操作。

任何想法?

回答

1

最好的方法是對地圖進行某種形式的表示,然後將您的最近位置保留在數據結構中(例如,通過僅保留位於固定增量的位置來省略太近的位置)。 然後,您可以將這些點匹配到最近的道路,並計算它們的投影,以在地圖上創建匹配的路徑。由於我已經實現了這個之前,我可以告訴它,它涉及相當多的工作,有地圖的一些表示(例如使用OSM)和幾何查詢知識(在PL/PGSQL中可能如果我們談論OSM)。 三角函數計算本身相當簡單,可以在網上找到(例如給定線上點的投影)。 爲了獲得高質量的結果,您還必須處理沿着路線的進度(即,由於GPS信號錯誤,即過濾引導您「向後」而不是錯誤「前進」的gps點)。

你最好關閉開始工作POC: 根據您的地圖實現(谷歌/ OSM) - 選擇某種在線路由平臺提供商(http://wiki.openstreetmap.org/wiki/Routing/online_routers)的。 然後,您可以在之前存儲的位置之間發送小型導航請求。由於它們的增量很小,您可能會在路上獲得相關的匹配路徑。

缺點:您依賴外部服務及其配額,無法爲無需支付的客戶提供服務。

優點:你可以在少量時間建立一個工作POC(〜小時)

無論哪種方式,你會被綁定到特定地圖的質量如更新道路(,轉彎限制),這將決定你的結果的正確性。