gpt4 book ai didi

mongodb - 移动 meteor 应用程序 - 计算附近的位置并存储为可分类的集合

转载 作者:IT老高 更新时间:2023-10-28 13:35:30 26 4
gpt4 key购买 nike

我正在组合一个移动 meteor 应用程序,我想用它来列出本地(比如 20 英里半径范围内)的便利设施。我收集了这些设施和相应的 latlng 数据——我希望能够将应用程序传递给我当前的位置(使用 Cordova)并生成一个排序最接近的列表(/collection?)。

我有两个具体问题,非常感谢您的建议!

我可以为此使用 mongo 的 $near 还是应该使用 node.js 插件(例如 'GeoLib' - https://github.com/manuelbieh/geolib )来进行距离计算?

如何生成这些位置的临时(本地存储)集合以显示在我的列表中?大概如果我不使用 $near 我必须遍历我的位置,计算所有位置的距离,然后返回距离低于某个阈值的任何位置,但这似乎很昂贵当我的位置列表越来越多时,这样做的方法。

对不起,这是我第一次尝试这样的事情;非常感谢经验丰富的开发人员提供的任何建议!

编辑 - 我的代码(为什么它不起作用?!)

我将这样的位置存储在一个集合中:

Beaches.insert({
名称:'威尼斯海滩 CA',
几何学: {
类型:“点”,
坐标:[-118.473314,118.473314]
}
});

...

Beaches._ensureIndex({'geometry.coordinates':'2d'}, function(err, result) {
如果(错误)返回控制台.dir(错误);
});

我正在像这样查询这些条目(传入 lat 和 lng):

getNearBeaches = function(lng,lat) {
返回 Beaches.find({'geometry.coordinates':
{
$近:{
$几何:{
类型:“点”,
坐标:[lng,lat]
}
},
$maxDistance: 20000//米
}
})
};

我可以直接使用 find() 列出我的收藏,但我的位置搜索没有返回任何内容,即使我将 $maxDistance 设置为一个巨大的数字,或者直接搜索已经存储的一组坐标.

我做错了什么??

最佳答案

您可以获取当前位置,将其发送到服务器并订阅集合,由mongodb过滤$near:

Meteor.subscribe("amenities", {latlng: Session.get("latlng")});

还有这样的:

Meteor.publish("amenities", function (latlng) {
return Amenities.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: latlng
},
$maxDistance: 20000 //meters
}
}
});
});

您必须具有正确的数据类型和索引。和字段 location (-:

关于mongodb - 移动 meteor 应用程序 - 计算附近的位置并存储为可分类的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23490264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com