我想在meteor中显示最接近用户输入地理位置的帖子。
用户在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/)
答案 0 :(得分:2)
文档建议$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],
}
});