我想实现一个功能,其中可以按与用户位置的距离排序显示附近场所的列表。我现在采用的方法是将 lat 和 lon 值存储为浮点数,并进行查询以查找用户位置的 +/- 值(搜索向北、南、东和西延伸的正方形用户)。然后我对结果集进行快速计算,确定我的业务逻辑中的距离和排序。现在我从主要使用关系数据库的人的角度来处理这个问题(该应用程序正在运行带有 Hibernate 的 MySQL),但是是否有更好的方法(在 Neo4J 等不同的数据库中或使用更好的列类型?)
此外,我的方法对于 0 lat 或 0 lon 或附近的查询有一个半复杂的解决方法)。
至于我对最优的工作定义,我正在寻找可扩展到 10 英里半径范围内的数百个场馆和总共数十万个场馆的方法。换句话说,大约是 SimpleGEO 的 1%,所以如果这个问题的规模不需要最佳解决方案,那么“你没事”也将是一个有趣的答案,尽管我很想知道为什么)