!7 lib 1400033 // JMapViewer 2.7 import org.openstreetmap.gui.jmapviewer.*; import org.openstreetmap.gui.jmapviewer.events.JMVCommandEvent; import org.openstreetmap.gui.jmapviewer.interfaces.JMapViewerEventListener; import org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon; import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader; import org.openstreetmap.gui.jmapviewer.interfaces.TileSource; import org.openstreetmap.gui.jmapviewer.tilesources.BingAerialTileSource; import org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource; p-substance { callMain(Demo); hideConsole(); } /** * Demonstrates the usage of {@link JMapViewer} * * @author Jan Peter Stotz * */ sclass Demo extends JFrame implements JMapViewerEventListener { private static final long serialVersionUID = 1L; private final JMapViewerTree treeMap; private final JLabel zoomLabel; private final JLabel zoomValue; private final JLabel mperpLabelName; private final JLabel mperpLabelValue; /** * Constructs the {@code Demo}. */ public Demo() { super("JMapViewer Demo"); setSize(400, 400); treeMap = new JMapViewerTree("Zones"); // Listen to the map viewer for user operations so components will // receive events and update map().addJMVListener(this); setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setExtendedState(JFrame.MAXIMIZED_BOTH); JPanel panel = new JPanel(new BorderLayout()); JPanel panelTop = new JPanel(); JPanel panelBottom = new JPanel(); JPanel helpPanel = new JPanel(); mperpLabelName = new JLabel("Meters/Pixels: "); mperpLabelValue = new JLabel(String.format("%s", map().getMeterPerPixel())); zoomLabel = new JLabel("Zoom: "); zoomValue = new JLabel(String.format("%s", map().getZoom())); add(panel, BorderLayout.NORTH); add(helpPanel, BorderLayout.SOUTH); panel.add(panelTop, BorderLayout.NORTH); panel.add(panelBottom, BorderLayout.SOUTH); JLabel helpLabel = new JLabel("Use right mouse button to move,\n " + "left double click or mouse wheel to zoom."); helpPanel.add(helpLabel); JButton button = new JButton("setDisplayToFitMapMarkers"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { map().setDisplayToFitMapMarkers(); } }); JComboBox tileSourceSelector = new JComboBox<>(new TileSource[] { new OsmTileSource.Mapnik(), new OsmTileSource.CycleMap(), new BingAerialTileSource(), }); tileSourceSelector.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { map().setTileSource((TileSource) e.getItem()); } }); JComboBox tileLoaderSelector; tileLoaderSelector = new JComboBox<>(new TileLoader[] {new OsmTileLoader(map())}); tileLoaderSelector.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { map().setTileLoader((TileLoader) e.getItem()); } }); map().setTileLoader((TileLoader) tileLoaderSelector.getSelectedItem()); panelTop.add(tileSourceSelector); panelTop.add(tileLoaderSelector); final JCheckBox showMapMarker = new JCheckBox("Map markers visible"); showMapMarker.setSelected(map().getMapMarkersVisible()); showMapMarker.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { map().setMapMarkerVisible(showMapMarker.isSelected()); } }); panelBottom.add(showMapMarker); /// final JCheckBox showTreeLayers = new JCheckBox("Tree Layers visible"); showTreeLayers.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { treeMap.setTreeVisible(showTreeLayers.isSelected()); } }); panelBottom.add(showTreeLayers); /// final JCheckBox showToolTip = new JCheckBox("ToolTip visible"); showToolTip.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { map().setToolTipText(null); } }); panelBottom.add(showToolTip); /// final JCheckBox showTileGrid = new JCheckBox("Tile grid visible"); showTileGrid.setSelected(map().isTileGridVisible()); showTileGrid.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { map().setTileGridVisible(showTileGrid.isSelected()); } }); panelBottom.add(showTileGrid); final JCheckBox showZoomControls = new JCheckBox("Show zoom controls"); showZoomControls.setSelected(map().getZoomControlsVisible()); showZoomControls.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { map().setZoomContolsVisible(showZoomControls.isSelected()); } }); panelBottom.add(showZoomControls); final JCheckBox scrollWrapEnabled = new JCheckBox("Scrollwrap enabled"); scrollWrapEnabled.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { map().setScrollWrapEnabled(scrollWrapEnabled.isSelected()); } }); panelBottom.add(scrollWrapEnabled); panelBottom.add(button); panelTop.add(zoomLabel); panelTop.add(zoomValue); panelTop.add(mperpLabelName); panelTop.add(mperpLabelValue); add(treeMap, BorderLayout.CENTER); // LayerGroup germanyGroup = new LayerGroup("Germany"); Layer germanyWestLayer = germanyGroup.addLayer("Germany West"); Layer germanyEastLayer = germanyGroup.addLayer("Germany East"); MapMarkerDot eberstadt = new MapMarkerDot(germanyEastLayer, "Eberstadt", 49.814284999, 8.642065999); MapMarkerDot ebersheim = new MapMarkerDot(germanyWestLayer, "Ebersheim", 49.91, 8.24); MapMarkerDot empty = new MapMarkerDot(germanyEastLayer, 49.71, 8.64); MapMarkerDot darmstadt = new MapMarkerDot(germanyEastLayer, "Darmstadt", 49.8588, 8.643); map().addMapMarker(eberstadt); map().addMapMarker(ebersheim); map().addMapMarker(empty); Layer franceLayer = treeMap.addLayer("France"); map().addMapMarker(new MapMarkerDot(franceLayer, "La Gallerie", 48.71, -1)); map().addMapMarker(new MapMarkerDot(43.604, 1.444)); map().addMapMarker(new MapMarkerCircle(53.343, -6.267, 0.666)); map().addMapRectangle(new MapRectangleImpl(new Coordinate(53.343, -6.267), new Coordinate(43.604, 1.444))); map().addMapMarker(darmstadt); treeMap.addLayer(germanyWestLayer); treeMap.addLayer(germanyEastLayer); MapPolygon bermudas = new MapPolygonImpl(c(49, 1), c(45, 10), c(40, 5)); map().addMapPolygon(bermudas); map().addMapPolygon(new MapPolygonImpl(germanyEastLayer, "Riedstadt", ebersheim, darmstadt, eberstadt, empty)); map().addMapMarker(new MapMarkerCircle(germanyWestLayer, "North of Suisse", new Coordinate(48, 7), .5)); Layer spain = treeMap.addLayer("Spain"); map().addMapMarker(new MapMarkerCircle(spain, "La Garena", new Coordinate(40.4838, -3.39), .002)); spain.setVisible(Boolean.FALSE); Layer wales = treeMap.addLayer("UK"); map().addMapRectangle(new MapRectangleImpl(wales, "Wales", c(53.35, -4.57), c(51.64, -2.63))); // map.setDisplayPosition(new Coordinate(49.807, 8.6), 11); // map.setTileGridVisible(true); map().addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { map().getAttribution().handleAttribution(e.getPoint(), true); } } }); map().addMouseMotionListener(new MouseAdapter() { @Override public void mouseMoved(MouseEvent e) { Point p = e.getPoint(); boolean cursorHand = map().getAttribution().handleAttributionCursor(p); if (cursorHand) { map().setCursor(new Cursor(Cursor.HAND_CURSOR)); } else { map().setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } if (showToolTip.isSelected()) map().setToolTipText(map().getPosition(p).toString()); } }); } private JMapViewer map() { return treeMap.getViewer(); } private static Coordinate c(double lat, double lon) { return new Coordinate(lat, lon); } /** * @param args Main program arguments */ public static void main(String[] args) { new Demo().setVisible(true); } private void updateZoomParameters() { if (mperpLabelValue != null) mperpLabelValue.setText(String.format("%s", map().getMeterPerPixel())); if (zoomValue != null) zoomValue.setText(String.format("%s", map().getZoom())); } @Override public void processCommand(JMVCommandEvent command) { if (command.getCommand().equals(JMVCommandEvent.COMMAND.ZOOM) || command.getCommand().equals(JMVCommandEvent.COMMAND.MOVE)) { updateZoomParameters(); } } }