Ticket #14796: JMapViewer.patch

File JMapViewer.patch, 15.4 KB (added by chris.tipper@…, 9 years ago)

JMapViewer patch based on svn trunk as of 12-05-2017 09:05 BST

  • src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java

    diff -rupN JMapViewer/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
    old new MouseWheelListener {  
    2626
    2727    private Point lastDragPoint;
    2828
    29     private boolean isMoving;
     29    private boolean isMoving = false;
    3030
    3131    private boolean movementEnabled = true;
    3232
    33     private int movementMouseButton = MouseEvent.BUTTON3;
    34     private int movementMouseButtonMask = MouseEvent.BUTTON3_DOWN_MASK;
     33    private int movementMouseButton = MouseEvent.BUTTON1;
     34    private int movementMouseButtonMask = MouseEvent.BUTTON1_DOWN_MASK;
    3535
    3636    private boolean wheelZoomEnabled = true;
    3737    private boolean doubleClickZoomEnabled = true;
    MouseWheelListener {  
    4949        if (!movementEnabled || !isMoving)
    5050            return;
    5151        // Is only the selected mouse button pressed?
    52         if ((e.getModifiersEx() & MOUSE_BUTTONS_MASK) == movementMouseButtonMask
     52        if ((e.getModifiersEx() & MOUSE_BUTTONS_MASK) == movementMouseButtonMask 
    5353                || (isPlatformOsx() && e.getModifiersEx() == MAC_MOUSE_BUTTON3_MASK)) {
    5454            Point p = e.getPoint();
    5555            if (lastDragPoint != null) {
  • src/org/openstreetmap/gui/jmapviewer/Demo.java

    diff -rupN JMapViewer/src/org/openstreetmap/gui/jmapviewer/Demo.java JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/Demo.java
    old new public class Demo extends JFrame impleme  
    7575        add(helpPanel, BorderLayout.SOUTH);
    7676        panel.add(panelTop, BorderLayout.NORTH);
    7777        panel.add(panelBottom, BorderLayout.SOUTH);
    78         JLabel helpLabel = new JLabel("Use right mouse button to move,\n "
     78        JLabel helpLabel = new JLabel("Use left mouse button to move,\n "
    7979                + "left double click or mouse wheel to zoom.");
    8080        helpPanel.add(helpLabel);
    8181        JButton button = new JButton("setDisplayToFitMapMarkers");
    public class Demo extends JFrame impleme  
    8888        JComboBox<TileSource> tileSourceSelector = new JComboBox<>(new TileSource[] {
    8989                new OsmTileSource.Mapnik(),
    9090                new OsmTileSource.CycleMap(),
    91                 new BingAerialTileSource(),
     91                new BingAerialTileSource()
    9292        });
    9393        tileSourceSelector.addItemListener(new ItemListener() {
    9494            @Override
  • src/org/openstreetmap/gui/jmapviewer/JMapViewer.java

    diff -rupN JMapViewer/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
    old new import org.openstreetmap.gui.jmapviewer.  
    4444 */
    4545public class JMapViewer extends JPanel implements TileLoaderListener {
    4646
     47    private static final long serialVersionUID = 1L;
     48
    4749    /** whether debug mode is enabled or not */
    4850    public static boolean debug;
    4951
    public class JMapViewer extends JPanel i  
    502504            return (int) marker.getRadius();
    503505        else if (p != null) {
    504506            Integer radius = getLatOffset(marker.getLat(), marker.getLon(), marker.getRadius(), false);
    505             radius = radius == null ? null : p.y - radius.intValue();
     507            radius = radius == null ? null : p.y - radius;
    506508            return radius;
    507509        } else
    508510            return null;
  • src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java

    diff -rupN JMapViewer/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java
    old new import java.net.URLConnection;  
    99import java.util.HashMap;
    1010import java.util.Map;
    1111import java.util.Map.Entry;
    12 import java.util.concurrent.Executors;
    13 import java.util.concurrent.ThreadPoolExecutor;
     12import java.util.concurrent.*;
    1413
    1514import org.openstreetmap.gui.jmapviewer.interfaces.TileJob;
    1615import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
    import org.openstreetmap.gui.jmapviewer.  
    2221 * @author Jan Peter Stotz
    2322 */
    2423public class OsmTileLoader implements TileLoader {
    25     private static final ThreadPoolExecutor jobDispatcher = (ThreadPoolExecutor) Executors.newFixedThreadPool(3);
     24   
     25    private static final ThreadPoolExecutor jobDispatcher = new ThreadPoolExecutor(8, 24, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(2_000));
    2626
    2727    private final class OsmTileJob implements TileJob {
    2828        private final Tile tile;
    public class OsmTileLoader implements Ti  
    178178
    179179    @Override
    180180    public void cancelOutstandingTasks() {
    181         jobDispatcher.getQueue().clear();
     181        for (Runnable item : jobDispatcher.getQueue()) {
     182            jobDispatcher.remove(item);
     183        }
    182184    }
    183185
    184186    /**
  • src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java

    Binary files JMapViewer/src/org/openstreetmap/gui/jmapviewer/images/bing_maps.png and JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/images/bing_maps.png differ
    Binary files JMapViewer/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_gray_large.png and JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_gray_large.png differ
    Binary files JMapViewer/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_gray_medium_1.png and JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_gray_medium_1.png differ
    Binary files JMapViewer/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_gray_medium_2.png and JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_gray_medium_2.png differ
    Binary files JMapViewer/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_gray_small.png and JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_gray_small.png differ
    Binary files JMapViewer/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_white_large.png and JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_white_large.png differ
    Binary files JMapViewer/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_white_medium_1.png and JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_white_medium_1.png differ
    Binary files JMapViewer/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_white_medium_2.png and JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_white_medium_2.png differ
    Binary files JMapViewer/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_white_small.png and JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/images/bing_maps_logo_white_small.png differ
    diff -rupN JMapViewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java
    old new import org.openstreetmap.gui.jmapviewer.  
    66/**
    77 * This listener listens to successful tile loads.
    88 */
    9 @FunctionalInterface
     9//@FunctionalInterface
    1010public interface TileLoaderListener {
    1111
    1212    /**
  • src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java

    diff -rupN JMapViewer/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java
    old new import java.util.concurrent.ExecutionExc  
    1414import java.util.concurrent.Future;
    1515import java.util.concurrent.FutureTask;
    1616import java.util.concurrent.TimeUnit;
    17 import java.util.concurrent.TimeoutException;
    1817import java.util.regex.Pattern;
    1918
    2019import javax.imageio.ImageIO;
    public class BingAerialTileSource extend  
    5756     * Constructs a new {@code BingAerialTileSource}.
    5857     */
    5958    public BingAerialTileSource() {
    60         super(new TileSourceInfo("Bing", null, null));
     59        super(new TileSourceInfo("Bing Aerial Maps", null, null));
    6160    }
    6261
    6362    /**
    public class BingAerialTileSource extend  
    192191    @Override
    193192    public Image getAttributionImage() {
    194193        try {
    195             final InputStream imageResource = JMapViewer.class.getResourceAsStream("images/bing_maps.png");
     194            final InputStream imageResource = JMapViewer.class.getResourceAsStream("images/bing_maps_logo_white_small.png");
    196195            if (imageResource != null) {
    197196                return ImageIO.read(imageResource);
    198197            } else {
    public class BingAerialTileSource extend  
    239238                    try {
    240239                        InputSource xml = new InputSource(getAttributionUrl().openStream());
    241240                        List<Attribution> r = parseAttributionText(xml);
    242                         System.out.println("Successfully loaded Bing attribution data.");
    243241                        return r;
    244242                    } catch (IOException ex) {
    245243                        System.err.println("Could not connect to Bing API. Will retry in " + waitTimeSec + " seconds.");
    public class BingAerialTileSource extend  
    263261            }
    264262        }
    265263        try {
    266             return attributions.get(0, TimeUnit.MILLISECONDS);
    267         } catch (TimeoutException ex) {
    268             System.err.println("Bing: attribution data is not yet loaded.");
     264            return attributions.get();
    269265        } catch (ExecutionException ex) {
    270266            throw new RuntimeException(ex.getCause());
    271267        } catch (InterruptedException ign) {
  • src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java

    diff -rupN JMapViewer/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java
    old new  
    11// License: GPL. For details, see Readme.txt file.
    22package org.openstreetmap.gui.jmapviewer.tilesources;
    33
     4import java.io.IOException;
     5import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
     6
    47/**
    58 * OSM Tile source.
    69 */
    public class OsmTileSource {  
    1114     */
    1215    public static class Mapnik extends AbstractOsmTileSource {
    1316
    14         private static final String PATTERN = "https://%s.tile.openstreetmap.org";
     17        private static final String PATTERN = "http://%s.tile.openstreetmap.org";
    1518
    1619        private static final String[] SERVER = {"a", "b", "c"};
    1720
    public class OsmTileSource {  
    3740     */
    3841    public static class CycleMap extends AbstractOsmTileSource {
    3942
    40         private static final String PATTERN = "http://%s.tile.opencyclemap.org/cycle";
     43        private static final String API_KEY = "API_KEY";
    4144
    42         private static final String[] SERVER = {"a", "b", "c"};
     45        private static final String PATTERN = "http://%s.tile.thunderforest.com/cycle";
     46
     47        private static final String[] SERVER = { "a", "b", "c" };
    4348
    4449        private int serverNum;
    4550
    public class OsmTileSource {  
    4752         * Constructs a new {@code CycleMap} tile source.
    4853         */
    4954        public CycleMap() {
    50             super("Cyclemap", PATTERN, "opencyclemap");
     55            super("OSM Cycle Map", PATTERN, "opencyclemap");
    5156        }
    5257
    5358        @Override
    public class OsmTileSource {  
    6166        public int getMaxZoom() {
    6267            return 18;
    6368        }
     69
     70        @Override
     71        public String getTileUrl(int zoom, int tilex, int tiley) throws IOException {
     72            return this.getBaseUrl() + getTilePath(zoom, tilex, tiley); // + "?apikey=" + API_KEY;
     73        }
     74
     75        @Override
     76        public String getAttributionText(int zoom, ICoordinate topLeft, ICoordinate botRight) {
     77            return "Maps © Thunderforest, Data © OpenStreetMap contributors";
     78        }
     79
     80        @Override
     81        public String getAttributionLinkURL() {
     82            return "http://www.thunderforest.com/";
     83        }
    6484    }
     85
    6586}
  • src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java

    diff -rupN JMapViewer/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
    old new public class ScanexTileSource extends TM  
    116116    @Override
    117117    public Point latLonToXY(double lat, double lon, int zoom) {
    118118        return new Point(
    119                 (int) osmMercator.lonToX(lon, zoom),
    120                 (int) latToTileY(lat, zoom)
     119                (int) Math.round(osmMercator.lonToX(lon, zoom)),
     120                (int) Math.round(latToTileY(lat, zoom))
    121121                );
    122122    }
    123123
  • src/org/openstreetmap/gui/jmapviewer/tilesources/TMSTileSource.java

    diff -rupN JMapViewer/src/org/openstreetmap/gui/jmapviewer/tilesources/TMSTileSource.java JMapViewer.patched/src/org/openstreetmap/gui/jmapviewer/tilesources/TMSTileSource.java
    old new public class TMSTileSource extends Abstr  
    5050    @Override
    5151    public Point latLonToXY(double lat, double lon, int zoom) {
    5252        return new Point(
    53                 (int) osmMercator.lonToX(lon, zoom),
    54                 (int) osmMercator.latToY(lat, zoom)
    55                 );
     53            (int) Math.round(osmMercator.lonToX(lon, zoom)),
     54            (int) Math.round(osmMercator.latToY(lat, zoom)));
    5655    }
    5756
    5857    @Override
    5958    public ICoordinate xyToLatLon(int x, int y, int zoom) {
    6059        return new Coordinate(
    61                 osmMercator.yToLat(y, zoom),
    62                 osmMercator.xToLon(x, zoom)
    63                 );
     60            osmMercator.yToLat(y, zoom),
     61            osmMercator.xToLon(x, zoom)
     62        );
    6463    }
    6564
    6665    @Override
    6766    public TileXY latLonToTileXY(double lat, double lon, int zoom) {
    6867        return new TileXY(
    69                 osmMercator.lonToX(lon, zoom) / getTileSize(),
    70                 osmMercator.latToY(lat, zoom) / getTileSize()
    71                 );
     68            osmMercator.lonToX(lon, zoom) / getTileSize(),
     69            osmMercator.latToY(lat, zoom) / getTileSize()
     70        );
    7271    }
    7372
    7473    @Override
    7574    public ICoordinate tileXYToLatLon(int x, int y, int zoom) {
    7675        return new Coordinate(
    77                 osmMercator.yToLat(y * getTileSize(), zoom),
    78                 osmMercator.xToLon(x * getTileSize(), zoom)
    79                 );
     76            osmMercator.yToLat(y * getTileSize(), zoom),
     77            osmMercator.xToLon(x * getTileSize(), zoom)
     78        );
    8079    }
    8180
    8281    @Override