Search code examples
javageotools

Rendering quality in JMapFrame


I would like to improve rendering quality in JMapFrame

    this.Map = new MapContent();

    this.MainWindow = new JMapFrame(this.Map);   

    // rendering START
    GTRenderer renderer = this.MainWindow.getMapPane().getRenderer();

    java.util.Map<Object, Object> hints =   renderer.getRendererHints();

    hints.put(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
    hints.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
    hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    hints.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
    hints.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); 
    hints.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    hints.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);

    renderer.setRendererHints(hints);

    this.MainWindow.getMapPane().setRenderer(renderer);
    // rendering END

there is no difference in quality of rendering with or without the code between //rendering START and //rendering END


Solution

  • It seems you are passing Java2D hints to the renderer instead of the Graphic. From the JavaDocs

          Rectangle paintArea = new Rectangle(width, height);
          ReferencedEnvelope mapArea = map.getBounds();
    
          renderer = new StreamingRenderer();
          renderer.setContext(map);
    
          RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );
          renderer.setJava2DHints(hints);
    
          Map rendererParams = new HashMap();
          rendererParams.put("optimizedDataLoadingEnabled",new Boolean(true) );
    
          renderer.setRendererHints( renderParams );
    
          renderer.paint(graphic, paintArea, mapArea);