public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, AltosMapStoreListener {
- static final int px_size = 512;
+ public static final int px_size = 512;
- static final int maptype_hybrid = 0;
- static final int maptype_roadmap = 1;
- static final int maptype_satellite = 2;
- static final int maptype_terrain = 3;
- static final int maptype_default = maptype_hybrid;
+ public static final int maptype_hybrid = 0;
+ public static final int maptype_roadmap = 1;
+ public static final int maptype_satellite = 2;
+ public static final int maptype_terrain = 3;
+ public static final int maptype_default = maptype_hybrid;
- static final int default_zoom = 15;
- static final int min_zoom = 3;
- static final int max_zoom = 21;
+ public static final int default_zoom = 15;
+ public static final int min_zoom = 3;
+ public static final int max_zoom = 21;
- static final String[] maptype_names = {
+ public static final String[] maptype_names = {
"hybrid",
"roadmap",
"satellite",
}
public void font_size_changed(int font_size) {
- map_interface.line.font_size_changed(font_size);
+ map_interface.line().font_size_changed(font_size);
for (AltosMapTile tile : tiles.values())
tile.font_size_changed(font_size);
repaint();
if (!gps.locked && gps.nsat < 4)
return;
- AltosMapRectangle damage = map_interface.path.add(gps.lat, gps.lon, state.state);
+ AltosMapRectangle damage = map_interface.path().add(gps.lat, gps.lon, state.state);
switch (state.state) {
case AltosLib.ao_flight_boost:
lower_right = new AltosPointInt(centre.x + load_radius * AltosMap.px_size,
centre.y + load_radius * AltosMap.px_size);
} else {
- upper_left = floor(transform.screen_point(new AltosPointDouble(0.0, 0.0)));
- lower_right = floor(transform.screen_point(new AltosPointDouble(width(), height())));
+ upper_left = floor(transform.screen_point(new AltosPointInt(0, 0)));
+ lower_right = floor(transform.screen_point(new AltosPointInt(width(), height())));
}
LinkedList<AltosPointInt> to_remove = new LinkedList<AltosPointInt>();
if (!tiles.containsKey(point)) {
AltosLatLon ul = transform.lat_lon(new AltosPointDouble(x, y));
AltosLatLon center = transform.lat_lon(new AltosPointDouble(x + AltosMap.px_size/2, y + AltosMap.px_size/2));
- AltosMapTile tile = new AltosMapTile(this, ul, center, zoom, maptype,
- AltosMap.px_size);
+ AltosMapTile tile = map_interface.new_tile(this, ul, center, zoom, maptype,
+ AltosMap.px_size);
tiles.put(point, tile);
}
}
return "Map";
}
+ public void paint() {
+ make_tiles();
+
+ for (AltosMapTile tile : tiles.values())
+ tile.paint(transform);
+
+ synchronized(marks) {
+ for (AltosMapMark mark : marks)
+ mark.paint(transform);
+ }
+
+ map_interface.path().paint(transform);
+
+ map_interface.line().paint(transform);
+ }
+
/* AltosMapTileListener methods */
public synchronized void notify_tile(AltosMapTile tile, int status) {
for (AltosPointInt point : tiles.keySet()) {