import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; import java.util.List; import java.util.Set; import org.geotools.data.simple.SimpleFeatureSource; import org.geotools.map.FeatureLayer; import org.geotools.map.Layer; import org.geotools.renderer.GTRenderer; import org.geotools.renderer.lite.StreamingRenderer; import org.geotools.styling.Style; import org.geotools.swing.JMapPane; import org.geotools.swing.RenderingExecutorEvent; import org.opengis.filter.identity.FeatureId; import br.com.ftp.agricultura.util.EstilosUtil; public class MapPanel extends JMapPane{ Point2D pointCursor = null; public MapPanel(){ super(); this.setDoubleBuffered(true); GTRenderer draw = new StreamingRenderer(); draw.setMapContent(this.getMapContent()); this.setRenderer( draw ); } @Override protected void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D graphics2D = (Graphics2D) g; //Set anti-alias! graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // Set anti-alias for text graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); drawCursor(pointCursor, g); repaint(); } private void drawCursor(Point2D pointCursor, Graphics g){ if(pointCursor!=null){ g.setColor(Color.RED); g.drawOval((int)pointCursor.getX()-5, (int)pointCursor.getY()-5, 10, 10); g.drawLine((int)pointCursor.getX(), (int)pointCursor.getY(), (int)pointCursor.getX(), (int)pointCursor.getY()-40); g.drawLine((int)pointCursor.getX(), (int)pointCursor.getY(), (int)pointCursor.getX(), (int)pointCursor.getY()+40); g.drawLine((int)pointCursor.getX(), (int)pointCursor.getY(), (int)pointCursor.getX()-40, (int)pointCursor.getY()); g.drawLine((int)pointCursor.getX(), (int)pointCursor.getY(), (int)pointCursor.getX()+40, (int)pointCursor.getY()); } } public void setCursor(Point2D pointCursor){ this.pointCursor = pointCursor; } public void setCursor(int x, int y){ if(this.pointCursor==null){ this.pointCursor = new Point2D.Double(); } this.pointCursor.setLocation(x, y); } /** * Sets the display to paint selected features yellow and unselected * features in the default style. * * @param IDs * identifiers of currently selected features */ public void displaySelectedFeatures(Layer layer, Set IDs) { Style style; if (IDs.isEmpty()) { style = EstilosUtil.createDefaultStyle(layer); } else { style = EstilosUtil.createSelectedStyle(layer, IDs); } ((FeatureLayer) layer).setStyle(style); this.repaint(1000); } public Layer getLayer(String name){ List layers = getMapContent().layers(); for (Layer layer : layers) { if(layer.getTitle().equalsIgnoreCase(name)){ return layer; } } return null; } }