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 }