Расстояние мудро:
Geokit-gem предоставляет метод для расчета расстояния между двумя точками:
# model has acts_as_mappable
Model.distance_between obj1, obj2, :units => :kms, :formula => :sphere
Искатель-накрест:
Geokit-rails (плагин) имеет средство поиска, которое генерирует SQL (для mysql, postgres и SQL-сервер) для вычисления расстояний, позволяя вам находить строки на определенном расстоянии:
Model.find_within(100, :units => :kms)
Он рассчитывает расстояния для всех строк, но не требует запросов к внешним ресурсам. Если ваша таблица действительно огромна, это может помочь (но я не уверен в этом), чтобы сузить ее, предварительно рассчитав диапазоны широты / долготы:
Model.where(:lat => (x-0.05)..(x+0.05), :lng => (y-0.05)..(y+0.05)).find_within(z, :units => :kms)
Если это все равно не поможет, вам придется написать какой-нибудь настроенный SQL. Расчет расстояния sql для геокит-рельсов здесь:
https://github.com/andre/geokit-rails/tree/master/lib/geokit-rails/adapters