Геокодер: как получить все результаты и упорядочить их по расстоянию?

Я знаю, как использовать метод near для получения всех результатов в пределах определенного радиуса, но как мне получить все результаты и упорядочить их по расстоянию?

Я знаю, что мог бы сделать что-то вроде этого:

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

Однако я бы предпочел вообще пропустить проверку радиуса и просто отсортировать все результаты по расстоянию.


person Godwin    schedule 17.07.2014    source источник
comment
Привет, @Годвин. Если вы считаете, что мой ответ решил вашу проблему, отметьте его как решение. Кроме того, чтобы это не отображалось в списках без ответов. Спасибо.   -  person ekampp    schedule 04.08.2015


Ответы (1)


У меня была такая же проблема, и в итоге я добавил эту область в свой геокодированный класс:

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

Это позволит вам сделать A.with_distance_to(point).order('distance')

person ekampp    schedule 25.07.2014
comment
его выдача ошибки на рельсах или рядом с ними"> stackoverflow.com/questions/33244132/ - person Adt; 22.10.2015