X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosui%2FAltosSiteMap.java;h=f614eae65fc526370b1508b45a6477cd9ccd077d;hb=907cc6c50755c0d19b93c15678d6f3022a6ee10b;hp=d928dd5c1ce5e6d26ee32f42c5f56ec4f4a8fc2a;hpb=382c54a0d052c8975b57c995ef83bc8934bde242;p=fw%2Faltos diff --git a/altosui/AltosSiteMap.java b/altosui/AltosSiteMap.java index d928dd5c..f614eae6 100644 --- a/altosui/AltosSiteMap.java +++ b/altosui/AltosSiteMap.java @@ -23,7 +23,8 @@ import java.io.*; import java.lang.Math; import java.awt.geom.Point2D; import java.util.concurrent.*; -import org.altusmetrum.AltosLib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay { // preferred vertical step in a tile in naut. miles @@ -52,11 +53,13 @@ public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay { // based on google js // http://maps.gstatic.com/intl/en_us/mapfiles/api-3/2/10/main.js // search for fromLatLngToPoint and fromPointToLatLng + /* private static Point2D.Double pt(LatLng latlng, int zoom) { double scale_x = 256/360.0 * Math.pow(2, zoom); double scale_y = 256/(2.0*Math.PI) * Math.pow(2, zoom); return pt(latlng, scale_x, scale_y); } + */ private static Point2D.Double pt(LatLng latlng, double scale_x, double scale_y) @@ -99,9 +102,11 @@ public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay { private LatLng latlng(double x, double y) { return latlng(new Point2D.Double(x,y), scale_x, scale_y); } + /* private LatLng latlng(Point2D.Double pt) { return latlng(pt, scale_x, scale_y); } + */ ConcurrentHashMap mapTiles = new ConcurrentHashMap(); Point2D.Double centre; @@ -181,8 +186,8 @@ public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay { AltosSiteMap asm = new AltosSiteMap(true); asm.centre = asm.getBaseLocation(lat, lng); - Point2D.Double p = new Point2D.Double(); - Point2D.Double p2; + //Point2D.Double p = new Point2D.Double(); + //Point2D.Double p2; int dx = -w/2, dy = -h/2; for (int y = dy; y < h+dy; y++) { for (int x = dx; x < w+dx; x++) { @@ -317,6 +322,22 @@ public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay { last_state = state.state; } + public void centre(Point2D.Double pt) { + Rectangle r = comp.getVisibleRect(); + Point2D.Double copt = translatePoint(pt, tileCoordOffset(topleft)); + int dx = (int)copt.x - r.width/2 - r.x; + int dy = (int)copt.y - r.height/2 - r.y; + r.x += dx; + r.y += dy; + comp.scrollRectToVisible(r); + } + + public void centre(AltosState state) { + if (!state.gps.locked && state.gps.nsat < 4) + return; + centre(pt(state.gps.lat, state.gps.lon)); + } + public void draw_circle(double lat, double lon) { final Point2D.Double pt = pt(lat, lon);