Rails 地理编码器附近范围

发布于 2024-11-07 21:33:07 字数 128 浏览 1 评论 0原文

例如,有没有办法获得十个最近的位置,无论距物体的距离有多大?

Obj.near(@address, 10)

并且此范围应返回 10 个最近的位置,而不是半径 10 内的对象。

Is there a way to get, for example, ten nearest places, no matter how big distance from object is?

Obj.near(@address, 10)

And this scope should return 10 nearest places, not objects within radius 10.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫性小仙女 2024-11-14 21:33:07

我建议看看 GeoRubyspatial_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) }

I'd suggest taking a look at GeoRuby and spatial_adapter. Unless you want to load a lot of data from your database and then doing the distance comparison yourself I'd suggest that you use PostgreSQL as your DB engine, as it has great Geo/GIS support. Putting the three together means that assuming you can pass a GeoRuby object as your @address, a scope approximatly like the following would do the job you need

scope :near lambda { |location, count| order("ST_Distance(geom_field_in_table, ST_GeomFromWKB(#{location.as_wkb}, -1))").limit(count) }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文