我想用吗啡框架查询一些地理位置点。我使用我的纬度、经度和半径(100 公里)和“附近”方法来查询我所在位置周围的其他人并限制 10 个结果。就像这样:
morphia.ds.find(Location.class).field("Location").near(latitude, longitude, 100).limit(10).asList();
它没有错误,但结果显示了我周围的位置点,并且超出了我的半径范围(100 公里。)。所以,查询结果时,我的半径不关心。
我的查询语句有什么问题?
提前致谢
最佳答案
南北纬度差的一个弧度的长度,在任何纬度上约为60海里、111公里或69法定英里;您可以在 wikipedia 中阅读更多相关信息或者在mongo地理空间页面Earth is Round but Maps are Flat .
使用千米时,将距离换算为 111.12(1 度约等于 111.12 公里),或换算为 69(英里)。
因此将您的查询更改为
morphia.ds.find(Location.class).field("Location").near(latitude, longitude, 100/111.12).limit(10).asList();
并确保 mongodb 接受 [long,lat] 中的坐标。
关于java - 使用 Java 使用 morphia mongodb 查找地理空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926182/