+ }
+
+ private boolean setLocation(double lat, double lng) {
+ 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_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 * 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);
+
+ last_pt = null;
+