java - 使用 Java 使用 morphia mongodb 查找地理空间

标签 java mongodb geospatial morphia

我想用吗啡框架查询一些地理位置点。我使用我的纬度、经度和半径(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/

相关文章:

java - MongoDB 的唯一 int _id

Mongodb $near、$geoWithin 和 $text

Solr 的地理空间格式器不起作用?

mysql - MySQL 中地理距离查询的现代标准程序是什么?

java - 使用 Java 加密敏感应用程序数据

java - 从 Struts2 应用程序中的 FreeMarker 获取模板文本

javascript - 用 Restify 抽象 Mongoose

java - 如何使 JTree 只显示字符串而不显示文件结构

java - 如何从标题为全名缩写的列表生成 .txt 文件

java - 如何使用 Java 从 MongoDB 3.4 版本获取数据?