如何返回离地理位置最近的文件?
Posted
技术标签:
【中文标题】如何返回离地理位置最近的文件?【英文标题】:How to return documents closest to a geographical location? 【发布时间】:2014-02-25 14:53:30 【问题描述】:我想显示最接近用户在流星中输入的地理位置的帖子。
用户在 addpost 模板上添加帖子:
//events.js (this code works nicely)
Template.addpost.events (
'click .add': function (evt, tmpl)
var title = tmpl.find('.title').value;
var lat = tmpl.find('.address-lat').value;
var long = tmpl.find('.address-long').value;
var loc = lat , long
Post.insert(title:title,loc:loc);
)
然后用这段代码显示在主页上:
//main.js (this works)
Post = new Meteor.Collection("posts");
Template.main.posts = function()
return Post.find();
和 html:
(this works)
#each posts
<tr>
<td>title</td>
</tr>
/each
现在我的问题是:我如何过滤这些帖子,并为用户指定的纬度和经度显示最接近的 100?
(可以在此处找到 mondodb 代码:http://docs.mongodb.org/manual/reference/operator/query/near/)
【问题讨论】:
【参考方案1】:文档建议$near
将结果从最近到最远排序。因此,您可以在服务器(发布时)或客户端(如果您已经拥有所有记录)上执行以下操作:
Template.main.posts = function ()
var totalRecords = Post.find().count();
return Post.find(
loc :
$near :
$geometry :
type : "Point",
coordinates: [ userLocLong, userLocLat ]
,
limit: 100 // Return only the nearest 100 results
);
;
来自 OP 的说明:
代码确实有效。刚发现需要将这种格式的坐标添加到posts
集合中:
Post.insert(
loc:
type: "Point",
coordinates: [foo, bar],
);
【讨论】:
不适合我。应用程序崩溃:/。 => Exited with code: 8 => 你的应用程序正在崩溃。等待文件更改。 => 修改 -- 重新启动。 @GeriTol 恐怕没有足够的信息来开始调试。以上是关于如何返回离地理位置最近的文件?的主要内容,如果未能解决你的问题,请参考以下文章