我有以下mysql表模式,其中包括记录了纬度和长度的帖子:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user | varchar(128) | NO | | NULL | |
| content | varchar(512) | NO | | NULL | |
| timestamp | varchar(128) | NO | | NULL | |
| longtitude | double | NO | | NULL | |
| latitude | double | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
与 geocoder
宝石,我能用一种方法算出两个纵横坐标之间的距离。
find the distance between two arbitrary points
Geocoder::Calculations.distance_between([47.858205,2.294359], [40.748433,-73.985655])
=> 3619.77359999382 # in configured units (default miles)
我想从表中检索一组记录。我知道我可以使用以下查询按时间排序,获得10条记录的批处理:
record = Post.order(:timestamp).offset(10 * @var.to_i).first(10)
如何修改此查询,以便获得某个半径内的所有帖子?i、 e.只显示坐标在当前用户所在位置5km以内的帖子?
如果有关系的话,我用的是sinatra而不是rails。
1条答案
按热度按时间z9smfwbn1#
你可以用这个
near
geocoder提供的方法:如他们的文档中所述,您需要将此添加到您的模型中:
参考文献:https://github.com/alexreisner/geocoder#for-activerecord模型