AltosSiteMapTile: adjust scale to 1 nmi per tile
[fw/altos] / ao-tools / altosui / AltosSiteMapTile.java
index 919de825dcfcd476b1f7de0cd5f9312085faaad8..c14fb93f0837ef1be9048a328cab8abb1a9329c1 100644 (file)
@@ -45,15 +45,17 @@ public class AltosSiteMapTile extends JLabel {
     int px_size = 512;
 
     private boolean setLocation(double lat, double lng) {
-        Point2D.Double north_1nm;
+        Point2D.Double north_step;
+        double step_nm = 0.5;
         for (zoom = 3; zoom < 22; zoom++) {
             coord_pt = pt(lat, lng, new Point2D.Double(0,0), zoom);
-            north_1nm = pt(lat+1/60.0, lng, new Point2D.Double(0,0), zoom);
-            if (coord_pt.y - north_1nm.y > px_size/2)
+            north_step = pt(lat+step_nm/60.0, lng, 
+                    new Point2D.Double(0,0), zoom);
+            if (coord_pt.y - north_step.y > px_size/2)
                 break;
         }
-        coord_pt.x = px_size/2 - ((long)coord_pt.x/px_size + off_x) * px_size;
-        coord_pt.y = px_size/2 - ((long)coord_pt.y/px_size + off_y) * px_size;
+        coord_pt.x = -px_size * Math.floor(coord_pt.x/px_size + off_x);
+        coord_pt.y = -px_size * Math.floor(coord_pt.y/px_size + off_y);
 
         scale_x = 256/360.0 * Math.pow(2, zoom);
         scale_y = 256/(2.0*Math.PI) * Math.pow(2, zoom);