[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