package sample2_waypoints;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.swing.JFrame;
import org.jxmapviewer.JXMapViewer;
import org.jxmapviewer.OSMTileFactoryInfo;
import org.jxmapviewer.viewer.DefaultTileFactory;
import org.jxmapviewer.viewer.DefaultWaypoint;
import org.jxmapviewer.viewer.GeoPosition;
import org.jxmapviewer.viewer.TileFactoryInfo;
import org.jxmapviewer.viewer.Waypoint;
import org.jxmapviewer.viewer.WaypointPainter;
import org.jxmapviewer.painter.CompoundPainter;
import org.jxmapviewer.painter.Painter;
/**
* A simple sample application that shows
* a OSM map of Europe containing a route with waypoints
* @author Martin Steiger
*/
public class Sample2
{
/**
* @param args the program args (ignored)
*/
public static <T> void main(String[] args)
{
JXMapViewer mapViewer = new JXMapViewer();
// Display the viewer in a JFrame
JFrame frame = new JFrame("JXMapviewer2 Example 2");
frame.getContentPane().add(mapViewer);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
// Create a TileFactoryInfo for OpenStreetMap
TileFactoryInfo info = new OSMTileFactoryInfo();
DefaultTileFactory tileFactory = new DefaultTileFactory(info);
tileFactory.setThreadPoolSize(8);
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);
// Create a track from the geo-positions
List<GeoPosition> track = Arrays.asList(frankfurt, wiesbaden, mainz, darmstadt, offenbach);
RoutePainter routePainter = new RoutePainter(track);
// Set the focus
mapViewer.zoomToBestFit(new HashSet<GeoPosition>(track), 0.7);
// Create waypoints from the geo-positions
Set<Waypoint> waypoints = new HashSet<Waypoint>(Arrays.asList(
new DefaultWaypoint(frankfurt),
new DefaultWaypoint(wiesbaden),
new DefaultWaypoint(mainz),
new DefaultWaypoint(darmstadt),
new DefaultWaypoint(offenbach)));
// Create a waypoint painter that takes all the waypoints
WaypointPainter<Waypoint> waypointPainter = new WaypointPainter<Waypoint>();
waypointPainter.setWaypoints(waypoints);
// Create a compound painter that uses both the route-painter and the waypoint-painter
List<Painter<JXMapViewer>> painters = new ArrayList<Painter<JXMapViewer>>();
painters.add(routePainter);
painters.add(waypointPainter);
CompoundPainter<JXMapViewer> painter = new CompoundPainter<JXMapViewer>(painters);
mapViewer.setOverlayPainter(painter);
}
}