Geocoder: How get all results and order by distance?

北城余情 提交于 2019-12-19 21:54:32

问题


I know how to use the near method to get all results within a certain radius, but how do I get all results and order by distance?

I know I could do something like this:

Location.near(my_location, 999999, order: 'distance')

However, I would rather skip the radius check altogether and simply get all results sorted by distance.


回答1:


I have had the same issue, and I ended up adding this scope to my geocoded class:

class A
  extend Geocoder::Model::ActiveRecord
  reverse_geocoded_by :latitude, :longitude

  scope :with_distance_to, ->(point) { select("#{table_name}.*").select("(#{distance_from_sql(point)}) as distance") }
end

This will allow you to do A.with_distance_to(point).order('distance')



来源:https://stackoverflow.com/questions/24793235/geocoder-how-get-all-results-and-order-by-distance

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!