Rails 查找附近附近坐标,除了 postgis 还有啥好方案?

hunkguo · 发布于 2017年07月02日 · 最后由 hunkguo 回复于 2017年07月03日 · 439 次阅读
96

postgis在查询时有点Hold不住,st_DWithin等函数总是说找不到,然后是坐标字段,有的用point,有的用geometry,而geometry似乎在rails又不能识别。 总之错误连连。

只是想实现查找附近坐标功能,postgis按理说最省事,结果也是一堆问题,有最近成功的朋友吗? 难道要换mongodb?

共收到 9 条回复
2564

redis 也可以

15420

有时候挖坑也是好的

6061

elasticsearch ?

8

postgis哪里有问题…

96
8hooopo 回复

调用st开头的几个函数时,总提示错误,估计是参数格式不对,但搜到的资料,用法各不相同。不知以哪里的为准。

8
32hunkguo 回复

自己没搞明白,不等于postgis有问题。你这样换其它方案也不见得搞的通…

96
8hooopo 回复

是没找到正确的方法,没少搜索,没找到解决的线索。

3a5cee

@hunkguo 其实单独这个功能,根本不需要使用postgis,给你推荐一个Gem

# Gemfile
gem 'activerecord-postgres-earthdistance'

运行:

$ bundle install
$ rails g earth_distance:setup

在model里面添加一个:

class Place < ActiveRecord::Base
  acts_as_geolocated
end

使用的时候:

Place.within_radius(100, -22.951916, -43.210487).all

如果不想用gem, 也可以自己为postgresql安装earth插件,直接用sql语句也可以。

96
3a5ceerocLv 回复

谢谢,这个gem之前没搜到,研究下,谢谢!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册