Comments (6)
I have the exact same problem.
It is caused by the fact that - somehow - the column alias for distance is missing (version 2.0.1) Therefore, when adding the order, the "undefined method `distance'" message will appear.
A (temporary) workaround is to include the distance (using distance_sql) in the order clause:
geokit_origin = Geokit::LatLng.new(39.833193, -94.862794)
order_sql = Company.distance_sql(geokit_origin, units: :kms)
companies.within(10, units: :kms, origin: geokit_origin).order("#{order_sql} ASC")
from geokit-rails.
you can use by_distance
locations = Location.by_distance(origin: @YOUR_LOCATION)
from geokit-rails.
See #39 for a similar discussion on this where an alternative has been created.
from geokit-rails.
Thanks @hiphapis, that is an easier solution. However, you can't sort descending by distance.
from geokit-rails.
@wspruijt you known reverse_order
locations = Location.by_distance(origin: @YOUR_LOCATION).reverse_order
if you use rails3 then just use reverse ;)
locations = Location.by_distance(origin: @YOUR_LOCATION).reverse
from geokit-rails.
hiphapis - when you use "by_distance" it appears you lose the distance column:
barns = Barn.by_distance(origin: "30093")
barns[0].distance
=> nil
The same is true for wspruijt's suggestion.
mnoack's suggestion appears to work great:
((DistanceCollection.new(Barn.within(5, :origin => "30093"))).set_distance_from("30093")).sort_by(&:distance)[0].distance
Barn Load (0.7ms) SELECT `contacts`.* FROM `contacts` WHERE `contacts`.`type` IN ('Barn') AND ((
(ACOS(least(1,COS(0.591845095540716)*COS(-1.4692258158522673)*COS(RADIANS(contacts.lat))*COS(RADIANS(contacts.lng))+
COS(0.591845095540716)*SIN(-1.4692258158522673)*COS(RADIANS(contacts.lat))*SIN(RADIANS(contacts.lng))+
SIN(0.591845095540716)*SIN(RADIANS(contacts.lat))))*3963.19)
<= 5))
=> 2.0967481609455723
If I find some time I might issue a pull request for that method, but I can hack around it.
from geokit-rails.
Related Issues (20)
- URGENT* Within method ignores the units option and uses miles as units.
- Selecting a record from a result queries the database again
- distance_to does not appear to calculate distance between 2 objects. HOT 1
- distance_by method is not working correctly HOT 3
- ip geocoding: general question HOT 2
- api.hostip.info down, how to change ip geocoder web service and which one to use?
- Having issue running unit tests as part of a PR HOT 2
- Autoloading of adapters fails with "undefined method 'loaded' for Mysql2:Class.
- Using 'within' without creating a geocode request HOT 1
- Recommended persistence strategy / philosophy HOT 1
- how can we access distance field? HOT 1
- Bug in the GeoLoc.new method and related to the retrieve_location_from_cookie_or_service method.
- Q: Is there a clean way to merge ActiveRecord::Relation results? HOT 2
- Dockerise tests & better documentation HOT 1
- Can we use by_distance with radius option? HOT 1
- Nested lat/lng column names HOT 4
- Is it possible to retrieve information about US municipality? HOT 1
- Different calculate values for ".within" method
- TypeError using by_distance on sqlite3 HOT 4
- Minor Regression between 2.3.1 and 2.5.0
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from geokit-rails.