2012-11-30 69 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