public void execute(Bbox worldBounds) { mapPresenter.getFeatureService().search(GeometryService.toPolygon(worldBounds), 0, QueryType.INTERSECTS, searchLayerType, intersectionRatio, new SelectionCallback(shift, true)); }
@Override public void getSnappingSources(final GeometryArrayFunction callback) { if (fetch) { final VectorServerLayer layer = (VectorServerLayer) mapPresenter.getLayersModel().getLayer(1); GeomajasServerExtension .getInstance() .getServerFeatureService() .search(mapPresenter.getViewPort().getCrs(), layer, GeometryService.toPolygon(mapBounds), 0.0, new FeatureMapFunction() { @Override public void execute(Map<FeaturesSupported, List<Feature>> featureMap) { List<Feature> features = featureMap.get(layer); Geometry[] geometries = new Geometry[features.size()]; for (int i = 0; i < features.size(); i++) { geometries[i] = features.get(i).getGeometry(); } callback.execute(geometries); } }); } }
/** * Calculate max bounds based on the map's max bounds, combined with the layer's bounds. * @return Polygon based on the max bounds bbox. */ private Geometry getMaxBoundsAsGeometry() { ClientMapInfo mapModel = territoryMap.getMapModel().getMapInfo(); Bbox result = mapModel.getMaxBounds(); for (ClientLayerInfo layer : mapModel.getLayers()) { result = BboxService.union(result, layer.getMaxExtent()); } if (result == null || result.getHeight() == 0 || result.getWidth() == 0) { result = new Bbox(); result.setX(Double.MIN_VALUE); result.setY(Double.MIN_VALUE); result.setMaxX(Double.MAX_VALUE); result.setMaxY(Double.MAX_VALUE); } return GeometryService.toPolygon(result); }