通过浮动值查找查询

时间:2016-02-11 10:11:55

标签: ruby-on-rails

我试图找出一种基于两个浮动值进行查询的方法。在我的情况下,这些是longitudelatitude

目前我正在使用Google Matrix API计算到A点的最短距离。这又使我返回最短距离的longitudelatitude

现在我希望能够使用它来查找我的数据库中的位置。

我尝试过使用Location.find_by(latitude: value, longitude: value),但出于某种原因,这种做法有时会有效,但有时则不然。

即使我将数据库中的值粘贴到其中也是如此。所以现在我试图找出一种方法,我可以很容易地找出它计算的最短位置,因为这个查询似乎是不准确的。

关于解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:0)

您在此处尝试查询latitudelongitude的相同位置。

你应该尝试类似的东西:

Location.find_by(latitude: lat_value, longitude: long_value)

lat_valuelong_value包含您要查询的所需值。

答案 1 :(得分:0)

我认为你应该试试这个宝石:https://github.com/alexreisner/geocoder

它有一些非常有用的助手,例如:

Location.near([40.71, -100.23], 20, :units => :km)
                               # Locations within 20 kilometres of a point

此宝石也适用于谷歌或其他地图Api。

“find_by”它会搜索完全相同的值。因此,根据您的舍入,它可能与存储在数据库中的值不完全相同。因此,如果您仍想使用它,您应该非常小心从Google获得的值以及存储在数据库中的值。

您还在代码中添加了相同的值变量:

Location.find_by(latitude: value, longitude: value)

但也许你没有对代码进行精确的复制/粘贴?那应该是:

lat = point_latitude
lng = point_longitude
Location.find_by(latitude: lat, longitude: lng)