请牛人指点,如何以最优的算法,对两点间的距离进行排序。

hengdafei 2014-03-31 09:57:22
业务要求:根据APP当前位置,取得距离最近的10条记录,再次刷新时,取得后10条最近的数据。。。

我考虑的思路:
>思路1:
查询出数据库中所有的数据,根据两点的经度和纬度计算得到距离。再按照距离排序。缺点是,如果数据库有100万条数据,每次取出来,效率会很慢。

>思路2:
SQL查询语句中,取得两点间,经度和纬度差值的绝对值,以从小到大排序,取得前10条即可。这样查出来的数据量就比较小了。

正确的思路到底是什么呢,不知道别人的APP距离排序怎么个算法。

>Java
算法是什么呢??

>APP客户端传递的参数
1:当前位置所在地址
2:当前位置的经度
3:当前位置的纬度

>数据库中表字段。
1:城市名
2:地址
3:经度
4:纬度
...全文
273 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hengdafei 2014-03-31
  • 打赏
  • 举报
回复
如果是SQL实现的话,算法是什么呢?
coolbamboo2008 2014-03-31
  • 打赏
  • 举报
回复
当然是要用思路2了,能让数据库做的,就不要再程序里写逻辑了,一个字,快!
hengdafei 2014-03-31
  • 打赏
  • 举报
回复
已经计算出geohash值了,现在就差sql语句查询范围内的记录了。 网上看的比较多的是 select * from table where 'xxxxx%'; 如当前位置的geohash=wx4dzyc9p73m,范围在1000m内,xxxxx该是多少呢,或者有什么算法吗? 2000m又是什么呢?
hengdafei 2014-03-31
  • 打赏
  • 举报
回复
例如算出当前位置的geohash=wx4er7j6vv87, 那距离100米,500米。。。的查询语句是什么呢? select * from table where geohash like '??%'

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧