@Override public Object createGeospatialQuery(String geolocationColumnName, Object shape, Object query) { Circle circle = (Circle) shape; List circleList = new ArrayList(); circleList.add(new double[] { circle.getCentre().x, circle.getCentre().y }); // Centre // of // circle circleList.add(circle.getRadius()); // Radius BasicDBObject q = (BasicDBObject) query; if (q == null) q = new BasicDBObject(); if (circle.getSurfaceType().equals(SurfaceType.SPHERICAL)) { q.put(geolocationColumnName, new BasicDBObject("$geoWithin", new BasicDBObject("$centerSphere", circleList))); } else { q.put(geolocationColumnName, new BasicDBObject("$geoWithin", new BasicDBObject("$center", circleList))); } return q; }
Assert.assertEquals(coordiates2d, twoDCircle.getCentre()); Assert.assertEquals(5d, twoDCircle.getRadius()); Assert.assertEquals(SurfaceType.SPHERICAL, twoDCircle.getSurfaceType()); Assert.assertEquals(0d,threeDCircle.getCentre().distance(coordiates2d)); Assert.assertEquals(5d, threeDCircle.getRadius()); Assert.assertEquals(SurfaceType.SPHERICAL, threeDCircle.getSurfaceType());
@Override public Object createGeospatialQuery(String geolocationColumnName, Object shape, Object query) { Circle circle = (Circle) shape; List circleList = new ArrayList(); circleList.add(new double[] { circle.getCentre().x, circle.getCentre().y }); // Centre // of // circle circleList.add(circle.getRadius()); // Radius BasicDBObject q = (BasicDBObject) query; if (q == null) q = new BasicDBObject(); if (circle.getSurfaceType().equals(SurfaceType.SPHERICAL)) { q.put(geolocationColumnName, new BasicDBObject("$geoWithin", new BasicDBObject("$centerSphere", circleList))); } else { q.put(geolocationColumnName, new BasicDBObject("$geoWithin", new BasicDBObject("$center", circleList))); } return q; }