与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
}
}
}
答案 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] }
}