我试图找出一种基于两个浮动值进行查询的方法。在我的情况下,这些是longitude
和latitude
。
目前我正在使用Google Matrix API计算到A点的最短距离。这又使我返回最短距离的longitude
和latitude
。
现在我希望能够使用它来查找我的数据库中的位置。
我尝试过使用Location.find_by(latitude: value, longitude: value)
,但出于某种原因,这种做法有时会有效,但有时则不然。
即使我将数据库中的值粘贴到其中也是如此。所以现在我试图找出一种方法,我可以很容易地找出它计算的最短位置,因为这个查询似乎是不准确的。
关于解决这个问题的任何想法?
答案 0 :(得分:0)
您在此处尝试查询latitude
和longitude
的相同位置。
你应该尝试类似的东西:
Location.find_by(latitude: lat_value, longitude: long_value)
而lat_value
和long_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)