这云函数里算出的distance单位应该一个弧度不是米,需要乘以地球赤道半径6378137后才是米,maxDistance则需要除以6378137 db.collection('activity').aggregate() .geoNear({ distanceField: 'distance', distanceMultiplier: 6378137,//这样算出来的才是米 spherical: true, near: db.Geo.Point(114.06058996826175, 22.550311425481723), maxDistance: 300000/6378137 //300公里 }) .end()
云函数里调用aggregate.geoNear查询结果不正确?db.collection('activity').aggregate() .geoNear({ distanceField: 'distance', // 输出的每个记录中 distance 即是与给定点的距离 spherical: true, near: db.Geo.Point(114.06058996826175, 22.550311425481723), maxDistance: 300 * 1000//300公里 // query: { // docType: 'geoNear', // }, // key: 'location', // 若只有 location 一个地理位置索引的字段,则不需填 // includeLocs: 'location', // 若只有 location 一个是地理位置,则不需填 }) .end() 以上同一份代码,在小程序端运行和云函数(版本:~2.3.0)中调用返回结果不一样,小程序端返回的距离为,distance: 6617.587567221755这个是正确的,而云函数返回结果为distance: 0.0010375484183725177 这个距离是错误的。为什么给定同样的点,查询同样的数据,两者返回结果不一样?
2020-09-10