public Map<String, Object> getLayerUserData(MapContext mapContext, ClientLayerInfo clientLayerInfo) { Map<String, Object> userData = new HashMap<String, Object>(); RasterLayerRasterizingInfo extraInfo = (RasterLayerRasterizingInfo) clientLayerInfo .getWidgetInfo(RasterLayerRasterizingInfo.WIDGET_KEY); userData.put(USERDATA_KEY_SHOWING, extraInfo.isShowing()); return userData; }
@Override public ClientLayerInfo build(MapPresenter mapPresenter, Layer layer, Bbox worldBounds, double resolution) { RasterServerLayer rasterServerLayer = (RasterServerLayer) layer; ClientRasterLayerInfo layerInfo = (ClientRasterLayerInfo) rasterServerLayer.getLayerInfo(); RasterLayerRasterizingInfo rasterInfo = new RasterLayerRasterizingInfo(); rasterInfo.setShowing(rasterServerLayer.isShowing()); rasterInfo.setCssStyle(rasterServerLayer.getOpacity() + ""); layerInfo.getWidgetInfo().put(RasterLayerRasterizingInfo.WIDGET_KEY, rasterInfo); return layerInfo; }
protected MapRasterizingInfo buildMap(MapPresenter mapPresenter) { MapRasterizingInfo mapRasterizingInfo = new MapRasterizingInfo(); ViewPort viewPort = mapPresenter.getViewPort(); mapRasterizingInfo.setBounds(viewPort.getBounds()); mapRasterizingInfo.setScale(viewPort.getScale()); mapRasterizingInfo.setTransparent(true); LegendRasterizingInfo legendRasterizingInfo = new LegendRasterizingInfo(); legendRasterizingInfo.setTitle("Legend"); FontStyleInfo font = new FontStyleInfo(); font.applyDefaults(); legendRasterizingInfo.setFont(font); mapRasterizingInfo.setLegendRasterizingInfo(legendRasterizingInfo); // Support for selection of layer object : create container for info on selected features; // store the selections layer per layer List<ClientLayerInfo> selectedLayers = new ArrayList<ClientLayerInfo>(); mapRasterizingInfo.setExtraLayers(selectedLayers); ClientMapInfo mapInfo = mapPresenter.getConfiguration().getServerConfiguration(); mapInfo.getWidgetInfo().put(MapRasterizingInfo.WIDGET_KEY, mapRasterizingInfo); // Note: mapRasterizingInfo at this time is pretty empty (rastering info for // layers not yet filled in) return mapRasterizingInfo; }
@Override public ClientLayerInfo build(MapPresenter mapPresenter, Layer layer, Bbox worldBounds, double resolution) { VectorServerLayer vectorLayer = (VectorServerLayer) layer; VectorLayerRasterizingInfo vectorRasterizingInfo = new VectorLayerRasterizingInfo(); vectorRasterizingInfo.setPaintGeometries(true); vectorRasterizingInfo.setPaintLabels(vectorLayer.isLabeled()); vectorRasterizingInfo.setShowing(layer.isShowing()); ClientVectorLayerInfo layerInfo = (ClientVectorLayerInfo) vectorLayer.getLayerInfo(); vectorRasterizingInfo.setStyle(layerInfo.getNamedStyleInfo()); if (!vectorLayer.getSelectedFeatures().isEmpty()) { Collection<Feature> selectedFeatures = vectorLayer.getSelectedFeatures(); featureIds.add(feature.getId()); vectorRasterizingInfo.setSelectedFeatureIds(featureIds.toArray(new String[selectedFeatures.size()])); ClientMapInfo mapInfo = mapPresenter.getConfiguration().getHintValue(GeomajasServerExtension.MAPINFO); FeatureStyleInfo selectStyle; vectorRasterizingInfo.setSelectionRule(selectionRule);
VectorLayerRasterizingInfo vectorRasterizingInfo = (VectorLayerRasterizingInfo) clientLayerInfo .getWidgetInfo(VectorLayerRasterizingInfo.WIDGET_KEY); int origSize = vectorRasterizingInfo.getStyle().getLabelStyle().getFontStyle().getSize(); vectorRasterizingInfo.getStyle().getLabelStyle().getFontStyle() .setSize(origSize * request.getDpi() / 96); for (ClientLayerInfo clientLayerInfo : mapRasterizingInfo.getExtraLayers()) { if (clientLayerInfo instanceof ClientGeometryLayerInfo) { for (Geometry geometry : ((ClientGeometryLayerInfo) clientLayerInfo).getGeometries()) { bounds.expandToInclude(dtoConverterService.toInternal(geometry).getEnvelopeInternal()); mapRasterizingInfo.setBounds(dtoConverterService.toDto(bounds)); mapRasterizingInfo.setScale(scale); imageService.writeMap(stream, request.getClientMapInfo()); container.setMapImageData(stream.toByteArray()); stream.reset(); mapRasterizingInfo.getLegendRasterizingInfo().setWidth(request.getLegendWidth()); mapRasterizingInfo.getLegendRasterizingInfo().setHeight(request.getLegendHeight()); imageService.writeLegend(stream, clientMapInfo); container.setLegendImageData(stream.toByteArray()); String key = UUID.randomUUID().toString(); cacheManagerService.put(null, CacheCategory.RASTER, key, container, dtoConverterService.toInternal(mapRasterizingInfo.getBounds())); response.setKey(key); response.setCacheCategory(CacheCategory.RASTER.toString());
@Override public void render(PdfContext context) { try { bbox = createBbox(); MapRasterizingInfo mapRasterizingInfo = (MapRasterizingInfo) clientMapInfo .getWidgetInfo(MapRasterizingInfo.WIDGET_KEY); mapRasterizingInfo.setBounds(new Bbox(bbox.getMinX(), bbox.getMinY(), bbox.getWidth(), bbox.getHeight())); mapRasterizingInfo.setScale(getMap().getPpUnit()); Graphics2D graphics = context.getGraphics2D(getBounds()); imageService.writeMap(graphics, clientMapInfo); graphics.dispose(); } catch (Exception e) { log.warn("Failed to render rasterized layers", e); } super.render(context); }
RasterLayerRasterizingInfo rInfo = (RasterLayerRasterizingInfo) layerInfo .getWidgetInfo(RasterLayerRasterizingInfo.WIDGET_KEY); rInfo.setShowing(false);
@Override public ClientLayerInfo build(MapPresenter mapPresenter, Widget widget, Bbox worldBounds, double rasterResolution) { ClientSvgLayerInfo svg = new ClientSvgLayerInfo(); String svgContent = widget.getElement().getInnerHTML(); svg.setSvgContent(svgContent); // send info to replace the viewbox server-side (original viewbox matches map bounds on screen, not print // bounds) svg.setViewBoxWorldBounds(worldBounds); svg.setViewBoxScreenBounds(mapPresenter.getViewPort().getTransformationService() .transform(worldBounds, RenderSpace.WORLD, RenderSpace.SCREEN)); return svg; } }
private void createWidgetPrintLayers(MapPresenter mapPresenter, MapRasterizingInfo mapRasterizingInfo, Bbox worldBounds, double rasterResolution) { AbsolutePanel mapPresenterAsAbsolutePanel = ((AbsolutePanel) mapPresenter.asWidget()); for (int i = 0 ; i < mapPresenterAsAbsolutePanel.getWidgetCount(); i++) { Widget widget = mapPresenterAsAbsolutePanel.getWidget(i); for (PrintableWidgetLayerBuilder widgetLayerPrintBuilder : getWidgetLayerBuilders()) { if (widgetLayerPrintBuilder.supports(widget)) { mapRasterizingInfo.getExtraLayers().add( widgetLayerPrintBuilder.build(mapPresenter, widget, worldBounds, rasterResolution)); break; } } } }
public Layer createLayer(MapContext mapContext, ClientLayerInfo clientLayerInfo) throws GeomajasException { if (!(clientLayerInfo instanceof TilebasedClientLayerInfo)) { throw new IllegalArgumentException( "TileBasedClientLayerFactory.createLayer() should only be called with TilebasedClientLayerInfo"); } TilebasedClientLayerInfo rasterInfo = (TilebasedClientLayerInfo) clientLayerInfo; RasterLayerRasterizingInfo extraInfo = (RasterLayerRasterizingInfo) rasterInfo .getWidgetInfo(RasterLayerRasterizingInfo.WIDGET_KEY); List<RasterTile> tiles = rasterInfo.getTiles(); for (RasterTile rasterTile : tiles) { if (null != rasterTile.getUrl() && !rasterTile.getUrl().isEmpty()) { rasterTile.setUrl(calculateUrl(rasterTile.getUrl())); } } final RasterLayer layer = configurationService.getRasterLayer(clientLayerInfo.getServerLayerId()); RasterDirectLayer rasterLayer = new RasterDirectLayer(imageThreadPool, getHttpDownloader(layer), tiles, rasterInfo.getTileHeight(), rasterInfo.getTileWidth(), rasterInfo.getScale(), extraInfo.getCssStyle()); rasterLayer.setTitle(clientLayerInfo.getLabel()); rasterLayer.getUserData().put(USERDATA_KEY_LAYER_ID, rasterInfo.getId()); rasterLayer.getUserData().put(USERDATA_KEY_SHOWING, extraInfo.isShowing()); return rasterLayer; }
private MapRasterizingInfo buildMap(MapPresenter mapPresenter) { MapRasterizingInfo mapRasterizingInfo = new MapRasterizingInfo(); ViewPort viewPort = mapPresenter.getViewPort(); mapRasterizingInfo.setBounds(viewPort.getBounds()); mapRasterizingInfo.setScale(1 / viewPort.getResolution()); mapRasterizingInfo.setTransparent(true); LegendRasterizingInfo legendRasterizingInfo = new LegendRasterizingInfo(); legendRasterizingInfo.setTitle("Legend"); FontStyleInfo font = new FontStyleInfo(); font.applyDefaults(); legendRasterizingInfo.setFont(font); mapRasterizingInfo.setLegendRasterizingInfo(legendRasterizingInfo); // Support for selection of layer object : create container for info on selected features; // store the selections layer per layer List<ClientLayerInfo> selectedLayers = new ArrayList<ClientLayerInfo>(); mapRasterizingInfo.setExtraLayers(selectedLayers); ClientMapInfo mapInfo = mapPresenter.getConfiguration().getHintValue(GeomajasServerExtension.MAPINFO); mapInfo.getWidgetInfo().put(MapRasterizingInfo.WIDGET_KEY, mapRasterizingInfo); // Note: mapRasterizingInfo at this time is pretty empty (rastering info for // layers not yet filled in) return mapRasterizingInfo; }
@Override public ClientLayerInfo build(MapPresenter mapPresenter, Layer layer, Bbox worldBounds, double scale) { VectorServerLayer vectorLayer = (VectorServerLayer) layer; VectorLayerRasterizingInfo vectorRasterizingInfo = new VectorLayerRasterizingInfo(); vectorRasterizingInfo.setPaintGeometries(true); vectorRasterizingInfo.setPaintLabels(vectorLayer.isLabeled()); vectorRasterizingInfo.setShowing(layer.isShowing()); ClientVectorLayerInfo layerInfo = (ClientVectorLayerInfo) vectorLayer.getLayerInfo(); vectorRasterizingInfo.setStyle(layerInfo.getNamedStyleInfo()); if (!vectorLayer.getSelectedFeatures().isEmpty()) { Collection<Feature> selectedFeatures = vectorLayer.getSelectedFeatures(); featureIds.add(feature.getId()); vectorRasterizingInfo.setSelectedFeatureIds(featureIds.toArray(new String[selectedFeatures.size()])); FeatureStyleInfo selectStyle; switch (layerInfo.getLayerType()) { vectorRasterizingInfo.setSelectionRule(selectionRule);
@Override public ClientLayerInfo build(MapPresenter mapPresenter, Layer layer, Bbox worldBounds, double scale) { RasterServerLayer rasterServerLayer = (RasterServerLayer) layer; ClientRasterLayerInfo layerInfo = (ClientRasterLayerInfo) rasterServerLayer.getLayerInfo(); RasterLayerRasterizingInfo rasterInfo = new RasterLayerRasterizingInfo(); rasterInfo.setShowing(rasterServerLayer.isShowing()); rasterInfo.setCssStyle(rasterServerLayer.getOpacity() + ""); layerInfo.getWidgetInfo().put(RasterLayerRasterizingInfo.WIDGET_KEY, rasterInfo); return layerInfo; }
RasterLayerRasterizingInfo rInfo = (RasterLayerRasterizingInfo) layerInfo .getWidgetInfo(RasterLayerRasterizingInfo.WIDGET_KEY); rInfo.setShowing(false);
@Override public ClientLayerInfo build(MapPresenter mapPresenter, Layer layer, Bbox worldBounds, double resolution) { AbstractTileBasedLayer tileBasedLayer = (AbstractTileBasedLayer) layer; TileConfiguration tileConfig = tileBasedLayer.getTileConfiguration(); TilebasedClientLayerInfo info = new TilebasedClientLayerInfo(); List<RasterTile> tiles = new ArrayList<RasterTile>(); for (Tile tile : getTiles(tileBasedLayer, mapPresenter.getViewPort().getCrs(), resolution, worldBounds)) { tiles.add(toRasterTile(tile)); } info.setTiles(tiles); info.setTileHeight(tileBasedLayer.getTileConfiguration().getTileHeight()); info.setTileWidth(tileBasedLayer.getTileConfiguration().getTileWidth()); info.setScale(1 / getActualResolution(tileConfig, resolution)); info.setCrs(mapPresenter.getViewPort().getCrs()); info.setId(tileBasedLayer.getId()); RasterLayerRasterizingInfo rasterInfo = new RasterLayerRasterizingInfo(); rasterInfo.setShowing(tileBasedLayer.isShowing()); rasterInfo.setCssStyle(tileBasedLayer.getOpacity() + ""); info.getWidgetInfo().put(RasterLayerRasterizingInfo.WIDGET_KEY, rasterInfo); return info; }