使用Google Map和MongoDB的不同度量结果

时间:2015-02-13 12:34:06

标签: mongodb mongodb-query

与GoogleMap和MongoDB使用相同距离的不同度量结果
事实上,这个问题很难回应。因为需要MongoDB和GoogleMap的方法来解决这个问题。有些人计算。根据我的其他测试,它们之间的距离差异可能是地球上不同位置的变化。就我而言,这种情况并不重要。但这是一个问题......


我有两个点坐标[41.034892, 28.980788][41.036770, 28.985557]。使用GoogleMaps,两点的距离测量为452米。但是使用MongoDB $near$maxDistance运算符,我可以在562米处从一个点到达另一个点。

差异是110米。有谁知道原因?

示例文档如下;

{
    "_id": ObjectId("54ddd5a06c0213711ca59257"),
    "loc": { "type":"Point", "coordinates":[41.034892, 28.980788] }
}

使用的查询短语如下;

{
    'loc': {
        $near: {
            $geometry: { "type":"Point", "coordinates":[41.036770, 28.985557] } ,
            $maxDistance: 562                           
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您可能已经切换了经度和纬度坐标:在Google地图上计算距离或者在MongoDB中切换Point对象中的坐标顺序时。

Point geometry object的GeoJSON标准规定数组中的第一项是经度,第二项是纬度。

如果您尝试使用Google地图计算Lat 28.980788,Long 41.034892和Lat 28.985557,Long 41.036770之间的距离,您将获得与MongoDB相同的结果。

快速检查this page给我的距离为0.5609公里(560.9米)。

修改

从你的评论我怀疑你可能用错误的坐标数组创建了你的点。这应该是您的示例文档:

{
    "_id": ObjectId("54ddd5a06c0213711ca59257"),
    "loc": { "type":"Point", "coordinates":[28.980788, 41.034892] }
}