|
public CarPointNearResult geoNearCarPoint(CarPointNearQuery carPointNearQuery) {
CarPointNearResult carPointNearResult = new CarPointNearResult();
if(carPointNearQuery != null && carPointNearQuery.getLongitude() != 0.0D && carPointNearQuery.getLatitude() != 0.0D) {
Point point = new Point(carPointNearQuery.getLongitude(), carPointNearQuery.getLatitude());
NearQuery near = NearQuery.near(point, Metrics.KILOMETERS);
Query query = new Query();
//数量
query.limit(carPointNearQuery.getCount() == 0?100:carPointNearQuery.getCount());
near.query(query);
//距离
near.maxDistance(new Distance(carPointNearQuery.getDistance() == 0.0D?1.0D:carPointNearQuery.getDistance(), Metrics.KILOMETERS));
near.spherical(true);
//调用DAO层,获取数据
GeoResults geoResults = this.carPointDao.geoNear(near, CarPoint.class, "carPoint");
carPointNearQuery.setCount(geoResults.getContent().size());
carPointNearQuery.setDistance(near.getMaxDistance().getValue());
carPointNearResult.setCarPointNearQuery(carPointNearQuery);
List geoResultsContent = geoResults.getContent();
ArrayList resultsList = new ArrayList();
Iterator i$ = geoResultsContent.iterator();
while(i$.hasNext()) {
GeoResult geoResult = (GeoResult)i$.next();
CarPointResult carPointResult = new CarPointResult();
carPointResult.setDistance(geoResult.getDistance().getValue());
carPointResult.setCarPoint((CarPoint)geoResult.getContent());
resultsList.add(carPointResult);
}
carPointNearResult.setCarPointList(resultsList);
return carPointNearResult;
} else {
logger.error("geoNear 参数异常");
carPointNearResult.setErrorCode(ErrorCode.PARAM_ERROR);
return null;
}
}
|
|
|