码迷,mamicode.com
首页 > 数据库 > 详细

andriod前端传来经度 纬度 坐标 来查询数据库坐标周围500M内的类数据

时间:2017-01-03 20:48:46      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:数据   距离   ring   turn   min   art   范围   uid   hql   

@Transient
public static List<Article> queryByPosition(PositionInfo pinfo){
//System.out.println("------query-----");
//String hql="from Article art where art.author.id="+uid;

double r = 6371;//地球半径千米
double dis = 0.5;//0.5千米距离
double dlng = 2*Math.asin(Math.sin(dis/(2*r))/Math.cos(pinfo.latitude*Math.PI/180));
dlng = dlng*180/Math.PI;//角度转为弧度
double dlat = dis/r;
dlat = dlat*180/Math.PI;
double minlat = pinfo.latitude-dlat;
double maxlat = pinfo.latitude+dlat;
double minlng = pinfo.longitude -dlng;
double maxlng = pinfo.longitude + dlng;

String hql = "from Article art where art.longitude>="+minlng+" and art.longitude <="+maxlng+" and art.latitude>="+minlat+" and art.latitude<="+maxlat+" and art.state=1 ";

if(pinfo.lastId>0){
hql += " and art.id<" + pinfo.lastId;
}

return DbUtil.findListByHql(hql,pinfo.size, Article.class);

}

这样查出数据库中的范围 得到集合

 

andriod前端传来经度 纬度 坐标 来查询数据库坐标周围500M内的类数据

标签:数据   距离   ring   turn   min   art   范围   uid   hql   

原文地址:http://www.cnblogs.com/fengyifengceaser/p/6245895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!