2011-11-26 83 views
3

我有一個Google地圖區域,其路由未定義。這是我大學的校園。由於道路沒有顯示在地圖上,因此我想再建兩幢建築物和一些多段線來定義道路。然後,我將應用A *算法來查找一條折線與另一條折線之間的最短路線。該地圖將可用於Android移動應用程序。在基本狀態下,應用程序更新用戶的位置。例如,用戶可以請求去工程學院。現在我怎麼知道他在哪裏,我的意思是路線的來源是什麼,最接近的折線?這是事情的方式嗎?謝謝。谷歌地圖上的自定義路由

回答

1
  1. 使用OpenStreetMap數據;您可以加入OSM作爲貢獻者,並將建築物,道路和其他東西添加到地圖中。 OpenStreetMap是一種維基百科,但帶有地圖,而不是百科全書文章。

  2. 下載並處理校園的OpenStreetMap數據:獲取所有可用作路由的多段線;整理他們的觀點;識別多個多段線共有的點 - 它們是節點;創建連接這些節點的弧的有向圖。

  3. 使用有向圖實現A *算法。 A *絕對是使用最好的算法;快速,正確和有據可查。

  4. 使用GPS設備(您的代碼正在運行)找出您的用戶在哪裏。 GPS以緯度/經度給出位置; OpenStreetMap數據也在lat/long;所以應該工作正常。

這自然會涉及一些研究和努力工作。我保證它會做你想做的事情,因爲我自己做過這些事情(商業上 - 我不會鏈接到我的產品,因爲我已經被指責了;但是我自然聲稱做某件事在商業上有一定的規定) 。有很多開源軟件可以幫助解決這些問題。特別是,A *算法在維基百科上解釋得非常好。

0

我不認爲A *算法是正確的算法。對於最短路徑dijkestra算法更好。根據維基百科,A *只會更快,但結果相同。否則似乎很合理。

+0

我很欣賞你的答案,但是你知道什麼算法是用來得到最接近的折線嗎?這將是我的Dijkistra算法的來源 – user1066429

+0

您最接近的折線是什麼意思? – Bytemain

0

如果你的問題是要找到用戶的位置,那麼你可以使用GPS。 關於獲得的最短路線:A *是不是dijkestra快,所以它是一個不錯的選擇,但可能獲得的結果必須是從多晶線的節點,而不是從一個聚一行到其他