2012-11-30 97 views
1

我正在搭建出租車調度應用程序
第一:我需要乘客應用程序來顯示最近的出租車,現在我知道如何在代碼中做到這一點,但以我的方式我必須經過所有的出租車位置(在服務器上的數據庫中)並計算與乘客位置的距離並得到最低的位置 - 我不想這樣做,因爲會有很多出租車並且經歷所有他們和做一些數學是服務器上的一種痛苦 - 有沒有辦法讓最近的人沒有通過所有的人?android,找到最近的位置,不經過所有的位置

第二:什麼是最好的數據庫使用 - 首先,它應該是SQL還是非SQL - 我需要一個非常強大的數據庫,因爲會有很多更新(我的意思是乘客位置添加,然後刪除時到達到目的地& &出租車位置變化頻繁)

終於:我會用RubyOnRails做服務器端和json作爲數據傳輸格式,你有什麼更好的建議給我?

感謝

回答

0

對於第一:使用你需要計算最近的距離。但是,與所有的出租車位置進行比較,我建議您通過經緯度的乘客。

在服務器上維護出租車位置的長度。寫查詢以獲得出租車的+/- 3英里長。這將在乘客區附近獲得有限的出租車。

對於sencond:=使用關係數據庫,SQL Server適用於我在上次項目中使用的應用程序。

對於服務器:我不知道RubyOnRails,但這也是更快&易於實現,因爲他們說..你已經選擇了最好的數據交換格式Json不需要改變它;你可以使用zip來提高性能。

0

對於第一個問題: 我認爲你可以從移動設備發送無線電(即:/43.34343/-3.3333/1000和1000代表米收音機),並從服務器返回只有這個地區包括的士。 您可以這樣做計算設備位置和出租車列表之間的距離。

0

試試這個link 它會告訴你所有的最近的地方,如酒店,劇院等。 它會顯示在列表中的特定地點的地址,也將在地圖視圖顯示..

希望這對你有幫助。

1

由於涉及複雜的等式,計算距離需要時間。

相反,嘗試做一個更簡單的「假距離」計算。

例如,爲了達到目的,您可以嘗試類似於d = SQRT(x * x + y * y)的方法,例如 d = | x | + | y |併爲此排序。你不需要這裏的精確公式,因爲粗略的近似可以。

+0

感謝 我用這種寶石 https://github.com/alexreisner/geocoder 它具有這種有用的方法 - Venue.near([40.71,100.23],20)上的點20英里內#場地 – Marwan