【发布时间】:2015-07-25 23:12:58
【问题描述】:
我将地点存储在 Mongoose 模型中(名称 + 坐标为 [lng, lat]),并且上面有一个 2d 索引。
我想从以公里为单位的半径内的点(lng,lat)获取最近的位置。
为此,我使用猫鼬的 $near 和 $maxDistance 参数。 我面临的问题是半径似乎并不精确,因此我得到了错误的结果。
这是我的地理搜索代码:
LocationModel.find({
loc: {
$near: coords,
$maxDistance: max_distance
}
}).exec(function(err, locations)
{
if(err)
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
res.json(locations);
});
我有两个测试地点:
地点 1:6.614090000000033, 45.4203
地点 2:6.905578500000047, 45.4683226
总距离:23.36km
$maxDistance 的 max_distance 是这样计算的:
var max_distance = req.params.max_distance / 111.12;
当我提供作为地点 A 的参考点时,我只会在我将 max_distance 设置为 33 公里及以上而不是 24 公里时获得结果。
有人可以解释一下这里出了什么问题吗?可能是 111.12(我在整个 Internet 上找到的),还是别的什么?
谢谢
【问题讨论】:
标签: node.js mongodb mongoose geolocation