spring data mongo踩坑之地理空间

如果想实现类似探探那样搜索附近人的功能,而使用的数据库为mongodb,那实现的方法还是挺简单的。但是对于这方面,网上的案例不是太多,而且解释大多模糊不清。

不多说,直接上代码:

Query query = new Query();
query.addCriteria(Criteria.where("loc").withinSphere(
               new Circle(new Point(model.getLongitude(),model.getLatitude()),new Distance(distance, Metrics.KILOMETERS)))
);
queryListsByQuery(query);

其中loc为你数据库中存储的经纬度,而model.getLongitude(),model.getLatitude()则为你所要计算的 经纬度,distance为你所要计算的经纬度距离,单位km。

当然可以自己选择为m。

KILOMETERS(6378.137D, "km"),
MILES(3963.191D, "mi"),

而其中最重要的是withinSphere,根据球面计算,而不是普通的within。

由此可以得出附近的人。

你可能感兴趣的:(java框架)