I'm trying to figure out a way to query based on two floating values. In my case these are
Currently I'm calculating shortest distance to point A, using Google Matrix API. That again returns me the
latitude of the shortest distance.
Now I'd like to be able to use that to find the location in my database.
I've tried using
Location.find_by(latitude: value, longitude: value) and for some reason this works sometimes, but not other times.
Even though I'm copy pasting the values from the database into it. So now I'm trying to figure out a way I can easily figure out which location it has calculated as shortest as this query seems to be inaccurate.
Any ideas on tackling this?
I think you should give this gem a try: https://github.com/alexreisner/geocoder
It has some really useful helpers such as:
Location.near([40.71, -100.23], 20, :units => :km) # Locations within 20 kilometres of a point
Also this gem works really well with Google or other Map Api.
The thing with "find_by" it that it will search for the exact same values. So depending on your rounding, it may not be the exactly same value as the one stored in the database. So if you still want to use that, you should be really careful with the values you get from Google and the ones stored in your DB.
Also you put same value variable in your code:
Location.find_by(latitude: value, longitude: value)
But perhaps you did not do an exact copy/paste of your code? That should rather be:
lat = point_latitude lng = point_longitude Location.find_by(latitude: lat, longitude: lng)
Here you are trying to query where both
longitude are same.
You should try something like:
Location.find_by(latitude: lat_value, longitude: long_value)
long_value contain the required values against which you want to query.