package sample7_swingwaypoints; import org.jxmapviewer.JXMapViewer; import org.jxmapviewer.OSMTileFactoryInfo; import org.jxmapviewer.input.CenterMapListener; import org.jxmapviewer.input.PanKeyListener; import org.jxmapviewer.input.PanMouseInputListener; import org.jxmapviewer.input.ZoomMouseWheelListenerCenter; import org.jxmapviewer.viewer.DefaultTileFactory; import org.jxmapviewer.viewer.GeoPosition; import org.jxmapviewer.viewer.LocalResponseCache; import org.jxmapviewer.viewer.TileFactoryInfo; import org.jxmapviewer.viewer.WaypointPainter; import javax.swing.JFrame; import javax.swing.event.MouseInputListener; import java.io.File; import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * A sample application demonstrating usage of Swing components as waypoints * using JXMapViewer. * * @author Daniel Stahr */ public class Sample7 { public static void main(String[] args) { // Create a TileFactoryInfo for OSM TileFactoryInfo info = new OSMTileFactoryInfo(); DefaultTileFactory tileFactory = new DefaultTileFactory(info); tileFactory.setThreadPoolSize(8); // Setup local file cache File cacheDir = new File(System.getProperty("user.home") + File.separator + ".jxmapviewer2"); LocalResponseCache.installResponseCache(info.getBaseURL(), cacheDir, false); // Setup JXMapViewer JXMapViewer mapViewer = new JXMapViewer(); mapViewer.setTileFactory(tileFactory); GeoPosition frankfurt = new GeoPosition(50, 7, 0, 8, 41, 0); GeoPosition wiesbaden = new GeoPosition(50, 5, 0, 8, 14, 0); GeoPosition mainz = new GeoPosition(50, 0, 0, 8, 16, 0); GeoPosition darmstadt = new GeoPosition(49, 52, 0, 8, 39, 0); GeoPosition offenbach = new GeoPosition(50, 6, 0, 8, 46, 0); // Set the focus mapViewer.setZoom(10); mapViewer.setAddressLocation(frankfurt); // Add interactions MouseInputListener mia = new PanMouseInputListener(mapViewer); mapViewer.addMouseListener(mia); mapViewer.addMouseMotionListener(mia); mapViewer.addMouseListener(new CenterMapListener(mapViewer)); mapViewer.addMouseWheelListener(new ZoomMouseWheelListenerCenter(mapViewer)); mapViewer.addKeyListener(new PanKeyListener(mapViewer)); // Create waypoints from the geo-positions Set<SwingWaypoint> waypoints = new HashSet<SwingWaypoint>(Arrays.asList( new SwingWaypoint("Frankfurt", frankfurt), new SwingWaypoint("Wiesbaden", wiesbaden), new SwingWaypoint("Mainz", mainz), new SwingWaypoint("Darmstadt", darmstadt), new SwingWaypoint("Offenbach", offenbach))); // Set the overlay painter WaypointPainter<SwingWaypoint> swingWaypointPainter = new SwingWaypointOverlayPainter(); swingWaypointPainter.setWaypoints(waypoints); mapViewer.setOverlayPainter(swingWaypointPainter); // Add the JButtons to the map viewer for (SwingWaypoint w : waypoints) { mapViewer.add(w.getButton()); } // Display the viewer in a JFrame JFrame frame = new JFrame("JXMapviewer2 Example 7"); frame.getContentPane().add(mapViewer); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }