package sample7_swingwaypoints;
import org.jxmapviewer.JXMapViewer;
import org.jxmapviewer.viewer.WaypointPainter;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Point2D;
/**
* "Paints" the Swing waypoints. In fact, just takes care of correct positioning of the representing button.
*
* @author Daniel Stahr
*/
public class SwingWaypointOverlayPainter extends WaypointPainter<SwingWaypoint> {
@Override
protected void doPaint(Graphics2D g, JXMapViewer jxMapViewer, int width, int height) {
for (SwingWaypoint swingWaypoint : getWaypoints()) {
Point2D point = jxMapViewer.getTileFactory().geoToPixel(
swingWaypoint.getPosition(), jxMapViewer.getZoom());
Rectangle rectangle = jxMapViewer.getViewportBounds();
int buttonX = (int)(point.getX() - rectangle.getX());
int buttonY = (int)(point.getY() - rectangle.getY());
JButton button = swingWaypoint.getButton();
button.setLocation(buttonX - button.getWidth() / 2, buttonY - button.getHeight() / 2);
}
}
}