[jmapviewer] 01/10: Imported Upstream version 2.0+dfsg

Bas Couwenberg sebastic at debian.org
Mon Aug 8 08:16:05 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository jmapviewer.

commit 1d4d0dc8051ff177fd6a8f84be5ad4616f905f81
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Mon Aug 8 09:13:13 2016 +0200

    Imported Upstream version 2.0+dfsg
---
 Readme.txt                                         | 11 ++--
 build.xml                                          |  6 +-
 .../gui/jmapviewer/DefaultMapController.java       | 18 +++--
 .../openstreetmap/gui/jmapviewer/JMapViewer.java   | 12 ++--
 .../gui/jmapviewer/events/JMVCommandEvent.java     |  4 --
 .../jmapviewer/interfaces/TileLoaderListener.java  |  4 ++
 src/org/openstreetmap/gui/jmapviewer/package.html  |  2 +-
 .../tilesources/AbstractMapQuestTileSource.java    | 66 -------------------
 .../jmapviewer/tilesources/ScanexTileSource.java   | 76 ++++++++++++++++++++--
 9 files changed, 103 insertions(+), 96 deletions(-)

diff --git a/Readme.txt b/Readme.txt
index 4c90acf..0b35c6b 100644
--- a/Readme.txt
+++ b/Readme.txt
@@ -2,22 +2,23 @@ JMapViewer
 
 (c) 2007, Tim Haussmann
 (c) 2008-2012, Jan Peter Stotz
-(c) 2009-2015, Dirk Stöcker
+(c) 2009-2016, Dirk Stöcker
 (c) 2009, Stefan Zeller
 (c) 2009, Karl Guggisberg
 (c) 2009, Dave Hansen
 (c) 2010-2011, Ian Dees
 (c) 2010-2011, Michael Vigovsky
-(c) 2011-2015, Paul Hartmann
-(c) 2011-2014, Gleb Smirnoff
-(c) 2011-2015, Vincent Privat
+(c) 2011-2016, Paul Hartmann
+(c) 2011-2016, Gleb Smirnoff
+(c) 2011-2016, Vincent Privat
 (c) 2011, Jason Huntley
-(c) 2012, Simon Legner
+(c) 2012-2016, Simon Legner
 (c) 2012, Teemu Koskinen
 (c) 2012, Jiri Klement
 (c) 2013, Matt Hoover
 (c) 2013, Alexei Kasatkin
 (c) 2013, Galo Higueras
+(c) 2015-2016, Wiktor Niesiobędzki
 
 This work bases partly on the JOSM plugin "Slippy Map Chooser" by Tim Haussmann
 
diff --git a/build.xml b/build.xml
index 9370d4e..2625650 100644
--- a/build.xml
+++ b/build.xml
@@ -14,7 +14,7 @@
 	</target>
 
 	<target name="build">
-		<javac srcdir="src" destdir="bin" source="1.7" target="1.7" debug="true" includeantruntime="false" encoding="UTF-8">
+		<javac srcdir="src" destdir="bin" source="1.8" target="1.8" debug="true" includeantruntime="false" encoding="UTF-8">
 			<include name="org/openstreetmap/gui/jmapviewer/**" />
 		</javac>
 
@@ -77,7 +77,7 @@
 
     <target name="checkstyle">
         <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties" 
-        	classpath="tools/checkstyle/checkstyle-6.19-all.jar"/>
+        	classpath="tools/checkstyle/checkstyle-7.1-all.jar"/>
         <checkstyle config="tools/checkstyle/jmapviewer_checks.xml">
             <fileset dir="${basedir}/src" includes="**/*.java" />
             <formatter type="xml" toFile="checkstyle-jmapviewer.xml"/>
@@ -113,7 +113,7 @@
                 private="true"
                 linksource="true"
                 author="false">
-            <link href="http://docs.oracle.com/javase/7/docs/api"/>
+            <link href="http://docs.oracle.com/javase/8/docs/api"/>
             <doctitle><![CDATA[<h2>JMapViewer - Javadoc</h2>]]></doctitle>
             <bottom><![CDATA[<a href="https://josm.openstreetmap.de/">JMapViewer</a>]]></bottom>
         </javadoc>
diff --git a/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java b/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
index 9575284..b287905 100644
--- a/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
+++ b/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
@@ -36,6 +36,10 @@ MouseWheelListener {
     private boolean wheelZoomEnabled = true;
     private boolean doubleClickZoomEnabled = true;
 
+    /**
+     * Constructs a new {@code DefaultMapController}.
+     * @param map map panel
+     */
     public DefaultMapController(JMapViewer map) {
         super(map);
     }
@@ -46,7 +50,7 @@ MouseWheelListener {
             return;
         // Is only the selected mouse button pressed?
         if ((e.getModifiersEx() & MOUSE_BUTTONS_MASK) == movementMouseButtonMask
-                || isPlatformOsx() && e.getModifiersEx() == MAC_MOUSE_BUTTON3_MASK) {
+                || (isPlatformOsx() && e.getModifiersEx() == MAC_MOUSE_BUTTON3_MASK)) {
             Point p = e.getPoint();
             if (lastDragPoint != null) {
                 int diffx = lastDragPoint.x - p.x;
@@ -66,7 +70,7 @@ MouseWheelListener {
 
     @Override
     public void mousePressed(MouseEvent e) {
-        if (e.getButton() == movementMouseButton || isPlatformOsx() && e.getModifiersEx() == MAC_MOUSE_BUTTON3_MASK) {
+        if (e.getButton() == movementMouseButton || (isPlatformOsx() && e.getModifiersEx() == MAC_MOUSE_BUTTON3_MASK)) {
             lastDragPoint = null;
             isMoving = true;
         }
@@ -74,7 +78,7 @@ MouseWheelListener {
 
     @Override
     public void mouseReleased(MouseEvent e) {
-        if (e.getButton() == movementMouseButton || isPlatformOsx() && e.getButton() == MouseEvent.BUTTON1) {
+        if (e.getButton() == movementMouseButton || (isPlatformOsx() && e.getButton() == MouseEvent.BUTTON1)) {
             lastDragPoint = null;
             isMoving = false;
         }
@@ -88,6 +92,10 @@ MouseWheelListener {
         }
     }
 
+    /**
+     * Determines if the map pane is allowed to be moved using the mouse
+     * @return {@code true} to allow the map pane to be moved using the mouse
+     */
     public boolean isMovementEnabled() {
         return movementEnabled;
     }
@@ -150,10 +158,12 @@ MouseWheelListener {
 
     @Override
     public void mouseEntered(MouseEvent e) {
+        // do nothing
     }
 
     @Override
     public void mouseExited(MouseEvent e) {
+        // do nothing
     }
 
     @Override
@@ -173,9 +183,7 @@ MouseWheelListener {
                 }
                 lastDragPoint = p;
             }
-
         }
-
     }
 
     /**
diff --git a/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java b/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
index d1993d4..a384cb5 100644
--- a/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
+++ b/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
@@ -308,7 +308,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
         int mapZoomMax = tileController.getTileSource().getMaxZoom();
 
         if (markers && mapMarkerList != null) {
-            synchronized (mapMarkerList) {
+            synchronized (this) {
                 for (MapMarker marker : mapMarkerList) {
                     if (marker.isVisible()) {
                         Point p = tileSource.latLonToXY(marker.getCoordinate(), mapZoomMax);
@@ -322,7 +322,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
         }
 
         if (rectangles && mapRectangleList != null) {
-            synchronized (mapRectangleList) {
+            synchronized (this) {
                 for (MapRectangle rectangle : mapRectangleList) {
                     if (rectangle.isVisible()) {
                         Point bottomRight = tileSource.latLonToXY(rectangle.getBottomRight(), mapZoomMax);
@@ -337,7 +337,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
         }
 
         if (polygons && mapPolygonList != null) {
-            synchronized (mapPolygonList) {
+            synchronized (this) {
                 for (MapPolygon polygon : mapPolygonList) {
                     if (polygon.isVisible()) {
                         for (ICoordinate c : polygon.getPoints()) {
@@ -656,7 +656,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
         }
 
         if (mapPolygonsVisible && mapPolygonList != null) {
-            synchronized (mapPolygonList) {
+            synchronized (this) {
                 for (MapPolygon polygon : mapPolygonList) {
                     if (polygon.isVisible())
                         paintPolygon(g, polygon);
@@ -665,7 +665,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
         }
 
         if (mapRectanglesVisible && mapRectangleList != null) {
-            synchronized (mapRectangleList) {
+            synchronized (this) {
                 for (MapRectangle rectangle : mapRectangleList) {
                     if (rectangle.isVisible())
                         paintRectangle(g, rectangle);
@@ -674,7 +674,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
         }
 
         if (mapMarkersVisible && mapMarkerList != null) {
-            synchronized (mapMarkerList) {
+            synchronized (this) {
                 for (MapMarker marker : mapMarkerList) {
                     if (marker.isVisible())
                         paintMarker(g, marker);
diff --git a/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java b/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java
index 34996df..5e8f9d3 100644
--- a/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java
+++ b/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java
@@ -28,10 +28,6 @@ public class JMVCommandEvent extends EventObject {
         setCommand(cmd);
     }
 
-    public JMVCommandEvent(Object source) {
-        super(source);
-    }
-
     /**
      * @return the command
      */
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java
index 8793611..9645e66 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java
@@ -3,6 +3,10 @@ package org.openstreetmap.gui.jmapviewer.interfaces;
 
 import org.openstreetmap.gui.jmapviewer.Tile;
 
+/**
+ * This listener listens to successful tile loads.
+ */
+ at FunctionalInterface
 public interface TileLoaderListener {
 
     /**
diff --git a/src/org/openstreetmap/gui/jmapviewer/package.html b/src/org/openstreetmap/gui/jmapviewer/package.html
index 9cd9c42..37540a6 100644
--- a/src/org/openstreetmap/gui/jmapviewer/package.html
+++ b/src/org/openstreetmap/gui/jmapviewer/package.html
@@ -7,6 +7,6 @@ component <a href="http://wiki.openstreetmap.org/wiki/JMapViewer">JMapViewer</a>
 <p>JMapViewer is designed to run as stand-alone component without
 any further requirements. Therefore <b>please do not add any code that
 depends on other libraries or applications</b>. Only functions and methods
-provided by the runtime library of Java 7 should be used.</p>
+provided by the runtime library of Java 8 should be used.</p>
 </body>
 </html>
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractMapQuestTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractMapQuestTileSource.java
deleted file mode 100644
index 8f45004..0000000
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractMapQuestTileSource.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer.tilesources;
-
-import java.awt.Image;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
-import javax.imageio.ImageIO;
-import javax.xml.bind.DatatypeConverter;
-
-public class AbstractMapQuestTileSource extends AbstractOsmTileSource {
-
-    // MapQuest logo in base64: http://developer.mapquest.com/content/osm/mq_logo.png
-    private static final String LOGO_BASE64 =
-            "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJl"+
-            "YWR5ccllPAAAAZtJREFUeNpi/P//P0PPcYf/DGSAEssDjIzdx+zJ0gwDLMQqVBWyZVAStGRgBMK33x8wnH62"+
-            "kngD+DmkGBwUshn42SXA/P8M/xg+/3rDcOPNPuIMMJeKAmv+8OMpw7ffHxikeLUZXBTzgez3DEzEGMDGzAmm"+
-            "jz5ewLDqWiHE6UwcDHxsYhAXsLPwMFhKxzIIccozPP18ieHhx3MMGsKOYP7td4fBzgUBN+ViBkeFLDD7zbf7"+
-            "DK++3WFgAMXC448X/uMDV17t+H/r7UEM8VNPl/8Hu0CGTx9s6tXXOxhEuJQYxLnVgK44w/Dzz1cGNWF7BlGg"+
-            "2KJLqQzCQBcxMbEw/P77g0FTxBkYJs8gXgCFKiMwOLbf6WDQF/djcFUqAvv33fdHYAM4WPjAFrz9/hAeLsef"+
-            "LALT4EBkhIYlMxMrAxerIJjNCdTExy4OZv/59xNnAKPEAh+bBNAQSMwKcsgAQ5odzBbilGNghcYE1pS4+14f"+
-            "MKq4GP79/w1OHCC/v/x6Exzv+x9MhbiOEeh3LAZQnBeYGCgEjJRmZ4AAAwCE6rplT3Ba/gAAAABJRU5ErkJg"+
-            "gg==";
-
-    protected static final String MAPQUEST_ATTRIBUTION = "Tiles Courtesy of MapQuest ";
-
-    protected static final String MAPQUEST_WEBSITE = "http://www.mapquest.com";
-
-    private static final int NUMBER_OF_SERVERS = 4;
-
-    private int SERVER_NUM = 1;
-
-    public AbstractMapQuestTileSource(String name, String baseUrl, String id) {
-        super(name, baseUrl, id);
-    }
-
-    @Override
-    public String getBaseUrl() {
-        String url = String.format(this.baseUrl, SERVER_NUM);
-        SERVER_NUM = (SERVER_NUM % NUMBER_OF_SERVERS) + 1;
-        return url;
-    }
-
-    @Override
-    public Image getAttributionImage() {
-        try {
-            return ImageIO.read(new ByteArrayInputStream(DatatypeConverter.parseBase64Binary(LOGO_BASE64)));
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    @Override
-    public String getAttributionImageURL() {
-        return MAPQUEST_WEBSITE;
-    }
-
-    /* (non-Javadoc)
-     * @see org.openstreetmap.gui.jmapviewer.tilesources.AbstractOsmTileSource#getTermsOfUseURL()
-     */
-    @Override
-    public String getTermsOfUseURL() {
-        return "http://developer.mapquest.com/web/products/open/map#terms";
-    }
-}
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
index b81fe22..a3d38ed 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
@@ -1,9 +1,13 @@
 // License: GPL. For details, see Readme.txt file.
 package org.openstreetmap.gui.jmapviewer.tilesources;
 
+import java.awt.Point;
 import java.util.Random;
 
+import org.openstreetmap.gui.jmapviewer.Coordinate;
 import org.openstreetmap.gui.jmapviewer.OsmMercator;
+import org.openstreetmap.gui.jmapviewer.TileXY;
+import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
 
 /**
  * This tilesource uses different to OsmMercator projection.
@@ -21,11 +25,6 @@ public class ScanexTileSource extends TMSTileSource {
     private static final int DEFAULT_MAXZOOM = 14;
     private static final String API_KEY = "4018C5A9AECAD8868ED5DEB2E41D09F7";
 
-    // Latitude to Y and back calculations.
-
-    /** eccentricity of Earth's ellipsoid */
-    private static double E = 0.0818191908426;
-
     private enum ScanexLayer {
         IRS("irs", "/TileSender.ashx?ModeKey=tile&MapName=F7B8CF651682420FA1749D894C8AD0F6&LayerName=BAC78D764F0443BD9AF93E7A998C9F5B"),
         SPOT("spot", "/TileSender.ashx?ModeKey=tile&MapName=F7B8CF651682420FA1749D894C8AD0F6&LayerName=F51CE95441284AF6B2FC319B609C7DEC");
@@ -49,6 +48,7 @@ public class ScanexTileSource extends TMSTileSource {
 
     /** IRS by default */
     private ScanexLayer layer = ScanexLayer.IRS;
+    private TemplatedTMSTileSource TemplateSource = null;
 
     /** cached latitude used in {@link #tileYToLat(double, int)} */
     private double cachedLat;
@@ -61,6 +61,15 @@ public class ScanexTileSource extends TMSTileSource {
         super(info);
         String url = info.getUrl();
 
+        /**
+         * The formulae in tileYToLat() and latToTileY() have 2^8
+         * hardcoded in them, so explicitly state that.  For now
+         * the assignment matches OsmMercator.DEFAUL_TILE_SIZE, and
+         * thus is extraneous.  But let it be there just in case if
+         * OsmMercator changes.
+         */
+        this.tileSize = 256;
+
         for (ScanexLayer slayer : ScanexLayer.values()) {
             if (url.equalsIgnoreCase(slayer.getName())) {
                 this.layer = slayer;
@@ -68,9 +77,12 @@ public class ScanexTileSource extends TMSTileSource {
                 this.baseUrl = DEFAULT_URL;
                 if (maxZoom == 0)
                     this.maxZoom = DEFAULT_MAXZOOM;
-                break;
+                return;
             }
         }
+        /** If not "irs" or "spot" keyword, then a custom URL. */
+        TemplatedTMSTileSource.checkUrl(info.getUrl());
+        this.TemplateSource = new TemplatedTMSTileSource(info);
     }
 
     @Override
@@ -78,6 +90,14 @@ public class ScanexTileSource extends TMSTileSource {
         return "jpeg";
     }
 
+   @Override
+    public String getTileUrl(int zoom, int tilex, int tiley) {
+        if (this.TemplateSource != null)
+            return this.TemplateSource.getTileUrl(zoom, tilex, tiley);
+        else
+            return this.getBaseUrl() + getTilePath(zoom, tilex, tiley);
+    }
+
     @Override
     public String getTilePath(int zoom, int tilex, int tiley) {
         int tmp = (int) Math.pow(2.0, zoom - 1);
@@ -88,6 +108,50 @@ public class ScanexTileSource extends TMSTileSource {
         return this.layer.getUri() + "&apikey=" + API_KEY + "&x=" + tilex + "&y=" + tiley + "&z=" + zoom;
     }
 
+    // Latitude to Y and back calculations.
+    private static double RADIUS_E = 6378137;   /* radius of Earth at equator, m */
+    private static double EQUATOR = 40075016.68557849; /* equator length, m */
+    private static double E = 0.0818191908426;  /* eccentricity of Earth's ellipsoid */
+
+    @Override
+    public Point latLonToXY(double lat, double lon, int zoom) {
+        return new Point(
+                (int) osmMercator.lonToX(lon, zoom),
+                (int) latToTileY(lat, zoom)
+                );
+    }
+
+    @Override
+    public ICoordinate xyToLatLon(int x, int y, int zoom) {
+        return new Coordinate(
+                tileYToLat((double) y, zoom),
+                osmMercator.xToLon(x, zoom)
+                );
+    }
+
+    @Override
+    public TileXY latLonToTileXY(double lat, double lon, int zoom) {
+        return new TileXY(
+                osmMercator.lonToX(lon, zoom) / getTileSize(),
+                latToTileY(lat, zoom)
+                );
+    }
+
+    @Override
+    public ICoordinate tileXYToLatLon(int x, int y, int zoom) {
+        return new Coordinate(
+                tileYToLat((double) y, zoom),
+                osmMercator.xToLon(x * getTileSize(), zoom)
+                );
+    }
+
+    private double latToTileY(double lat, int zoom) {
+        double tmp = Math.tan(Math.PI/4 * (1 + lat/90));
+        double pow = Math.pow(Math.tan(Math.PI/4 + Math.asin(E * Math.sin(Math.toRadians(lat)))/2), E);
+
+        return (EQUATOR/2 - (RADIUS_E * Math.log(tmp/pow))) * Math.pow(2.0, zoom) / EQUATOR;
+    }
+
     /*
      * To solve inverse formula latitude = f(y) we use
      * Newton's method. We cache previous calculated latitude,

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/jmapviewer.git



More information about the Pkg-grass-devel mailing list