001 package org.openstreetmap.gui.jmapviewer;
002
003 //License: GPL. Copyright 2008 by Jan Peter Stotz
004
005 import java.awt.BorderLayout;
006 import java.awt.event.ActionEvent;
007 import java.awt.event.ActionListener;
008 import java.awt.event.ItemEvent;
009 import java.awt.event.ItemListener;
010 import java.io.IOException;
011
012 import javax.swing.JButton;
013 import javax.swing.JCheckBox;
014 import javax.swing.JComboBox;
015 import javax.swing.JFrame;
016 import javax.swing.JLabel;
017 import javax.swing.JPanel;
018
019 import org.openstreetmap.gui.jmapviewer.events.JMVCommandEvent;
020 import org.openstreetmap.gui.jmapviewer.interfaces.JMapViewerEventListener;
021 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
022 import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
023 import org.openstreetmap.gui.jmapviewer.tilesources.BingAerialTileSource;
024 import org.openstreetmap.gui.jmapviewer.tilesources.MapQuestOpenAerialTileSource;
025 import org.openstreetmap.gui.jmapviewer.tilesources.MapQuestOsmTileSource;
026 import org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource;
027
028 /**
029 *
030 * Demonstrates the usage of {@link JMapViewer}
031 *
032 * @author Jan Peter Stotz
033 *
034 */
035 public class Demo extends JFrame implements JMapViewerEventListener {
036
037 private static final long serialVersionUID = 1L;
038
039 private JMapViewer map = null;
040
041 private JLabel zoomLabel=null;
042 private JLabel zoomValue=null;
043
044 private JLabel mperpLabelName=null;
045 private JLabel mperpLabelValue = null;
046
047 public Demo() {
048 super("JMapViewer Demo");
049 setSize(400, 400);
050
051 map = new JMapViewer();
052
053 // Listen to the map viewer for user operations so components will
054 // recieve events and update
055 map.addJMVListener(this);
056
057 // final JMapViewer map = new JMapViewer(new MemoryTileCache(),4);
058 // map.setTileLoader(new OsmFileCacheTileLoader(map));
059 // new DefaultMapController(map);
060
061 setLayout(new BorderLayout());
062 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
063 setExtendedState(JFrame.MAXIMIZED_BOTH);
064 JPanel panel = new JPanel();
065 JPanel helpPanel = new JPanel();
066
067 mperpLabelName=new JLabel("Meters/Pixels: ");
068 mperpLabelValue=new JLabel(String.format("%s",map.getMeterPerPixel()));
069
070 zoomLabel=new JLabel("Zoom: ");
071 zoomValue=new JLabel(String.format("%s", map.getZoom()));
072
073 add(panel, BorderLayout.NORTH);
074 add(helpPanel, BorderLayout.SOUTH);
075 JLabel helpLabel = new JLabel("Use right mouse button to move,\n "
076 + "left double click or mouse wheel to zoom.");
077 helpPanel.add(helpLabel);
078 JButton button = new JButton("setDisplayToFitMapMarkers");
079 button.addActionListener(new ActionListener() {
080
081 public void actionPerformed(ActionEvent e) {
082 map.setDisplayToFitMapMarkers();
083 }
084 });
085 JComboBox tileSourceSelector = new JComboBox(new TileSource[] { new OsmTileSource.Mapnik(),
086 new OsmTileSource.CycleMap(), new BingAerialTileSource(), new MapQuestOsmTileSource(), new MapQuestOpenAerialTileSource() });
087 tileSourceSelector.addItemListener(new ItemListener() {
088 public void itemStateChanged(ItemEvent e) {
089 map.setTileSource((TileSource) e.getItem());
090 }
091 });
092 JComboBox tileLoaderSelector;
093 try {
094 tileLoaderSelector = new JComboBox(new TileLoader[] { new OsmFileCacheTileLoader(map),
095 new OsmTileLoader(map) });
096 } catch (IOException e) {
097 tileLoaderSelector = new JComboBox(new TileLoader[] { new OsmTileLoader(map) });
098 }
099 tileLoaderSelector.addItemListener(new ItemListener() {
100 public void itemStateChanged(ItemEvent e) {
101 map.setTileLoader((TileLoader) e.getItem());
102 }
103 });
104 map.setTileLoader((TileLoader) tileLoaderSelector.getSelectedItem());
105 panel.add(tileSourceSelector);
106 panel.add(tileLoaderSelector);
107 final JCheckBox showMapMarker = new JCheckBox("Map markers visible");
108 showMapMarker.setSelected(map.getMapMarkersVisible());
109 showMapMarker.addActionListener(new ActionListener() {
110
111 public void actionPerformed(ActionEvent e) {
112 map.setMapMarkerVisible(showMapMarker.isSelected());
113 }
114 });
115 panel.add(showMapMarker);
116 final JCheckBox showTileGrid = new JCheckBox("Tile grid visible");
117 showTileGrid.setSelected(map.isTileGridVisible());
118 showTileGrid.addActionListener(new ActionListener() {
119
120 public void actionPerformed(ActionEvent e) {
121 map.setTileGridVisible(showTileGrid.isSelected());
122 }
123 });
124 panel.add(showTileGrid);
125 final JCheckBox showZoomControls = new JCheckBox("Show zoom controls");
126 showZoomControls.setSelected(map.getZoomContolsVisible());
127 showZoomControls.addActionListener(new ActionListener() {
128
129 public void actionPerformed(ActionEvent e) {
130 map.setZoomContolsVisible(showZoomControls.isSelected());
131 }
132 });
133 panel.add(showZoomControls);
134 panel.add(button);
135
136 panel.add(zoomLabel);
137 panel.add(zoomValue);
138 panel.add(mperpLabelName);
139 panel.add(mperpLabelValue);
140
141 add(map, BorderLayout.CENTER);
142
143 //
144 map.addMapMarker(new MapMarkerDot(49.814284999, 8.642065999));
145 map.addMapMarker(new MapMarkerDot(49.91, 8.24));
146 map.addMapMarker(new MapMarkerDot(49.71, 8.64));
147 map.addMapMarker(new MapMarkerDot(48.71, -1));
148 map.addMapMarker(new MapMarkerDot(49.8588, 8.643));
149
150 // map.setDisplayPositionByLatLon(49.807, 8.6, 11);
151 // map.setTileGridVisible(true);
152 }
153
154 /**
155 * @param args
156 */
157 public static void main(String[] args) {
158 // java.util.Properties systemProperties = System.getProperties();
159 // systemProperties.setProperty("http.proxyHost", "localhost");
160 // systemProperties.setProperty("http.proxyPort", "8008");
161 new Demo().setVisible(true);
162 }
163
164 private void updateZoomParameters() {
165 if (mperpLabelValue!=null)
166 mperpLabelValue.setText(String.format("%s",map.getMeterPerPixel()));
167 if (zoomValue!=null)
168 zoomValue.setText(String.format("%s", map.getZoom()));
169 }
170
171 @Override
172 public void processCommand(JMVCommandEvent command) {
173 if (command.getCommand().equals(JMVCommandEvent.COMMAND.ZOOM) ||
174 command.getCommand().equals(JMVCommandEvent.COMMAND.MOVE)) {
175 updateZoomParameters();
176 }
177 }
178
179 }