有没有办法获得,例如,十个最近的地方,无论距物体有多远?
Obj.near(@address, 10)
此范围应返回10个最近的位置,而不是半径10内的对象。
答案 0 :(得分:1)
我建议您查看GeoRuby和spatial_adapter。除非您想从数据库加载大量数据然后自己进行距离比较,否则我建议您使用PostgreSQL作为数据库引擎,因为它具有很好的地理/ GIS支持。将三者放在一起意味着假设你可以将一个GeoRuby对象作为你的@address传递,一个类似下面的范围可以完成你需要的工作
scope :near lambda { |location, count| order("ST_Distance(geom_field_in_table, ST_GeomFromWKB(#{location.as_wkb}, -1))").limit(count) }