X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosMap.java;h=3877c7dce7a3631419c1c7e4ac37011c493fc267;hp=203a23b50608349d343fc1a9c05c536f053e521f;hb=3af81a45be69b4693396de4a5e2c386be566b933;hpb=f26cfe417c6977cf1e7e75a4f050e25f64d41859 diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 203a23b5..3877c7dc 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_11; +package org.altusmetrum.altoslib_14; import java.io.*; import java.lang.*; @@ -82,7 +82,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { static final long auto_scroll_delay = 20 * 1000; public AltosMapTransform transform; - AltosLatLon centre; + public AltosLatLon centre; public void reset() { // nothing @@ -211,17 +211,18 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } public boolean set_maptype(int maptype) { +/* if (maptype != this.maptype) { this.maptype = maptype; tiles.clear(); repaint(); return true; } +*/ return false; } - public void show(AltosGPS gps, int state) { - + public void show(AltosGPS gps, double time, int state, double gps_height) { /* * If insufficient gps data, nothing to update */ @@ -248,7 +249,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } if (path != null) { - AltosMapRectangle damage = path.add(gps.lat, gps.lon, state); + AltosMapRectangle damage = path.add(gps, time, state, gps_height); if (damage != null) repaint(damage, AltosMapPath.stroke_width); @@ -260,7 +261,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } public void show(AltosState state, AltosListenerState listener_state) { - show(state.gps, state.state()); + show(state.gps, state.time, state.state(), state.gps_height()); } public void centre(AltosLatLon lat_lon) { @@ -288,13 +289,23 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { centre(lat_lon); } - public void add_mark(double lat, double lon, int state) { + public AltosMapMark add_mark(double lat, double lon, int state, String label) { + AltosMapMark mark; synchronized(marks) { - AltosMapMark mark = map_interface.new_mark(lat, lon, state); + mark = map_interface.new_mark(lat, lon, state, label); if (mark != null) marks.add(mark); } repaint(); + return mark; + } + + public AltosMapMark add_mark(double lat, double lon, int state) { + return add_mark(lat, lon, state, null); + } + + public void del_mark(AltosMapMark mark) { + marks.remove(mark); } public void clear_marks() { @@ -339,7 +350,9 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { AltosLatLon ul = transform.lat_lon(point); AltosLatLon center = transform.lat_lon(new AltosPointDouble(x + AltosMap.px_size/2, y + AltosMap.px_size/2)); AltosMapTile tile = map_interface.new_tile(cache, ul, center, zoom, maptype, px_size, scale); - debug("show state %s url %s\n", AltosMapTile.status_name(tile.store.status()), tile.store.url); + int status = tile.store.status(); + if (status == AltosMapTile.fetching) + debug("Fetching %.6f %.6f %d\n", center.lat, center.lon, zoom); tile.add_listener(this); tiles.put(point, tile); } @@ -350,7 +363,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { public void set_load_params(int new_zoom, int new_type, double lat, double lon, int radius, AltosMapTileListener listener) { if (AltosMap.min_zoom <= new_zoom && new_zoom <= AltosMap.max_zoom) zoom = new_zoom; - maptype = new_type; +/* maptype = new_type; */ load_centre = new AltosLatLon(lat, lon); load_radius = radius; load_listener = listener; @@ -486,6 +499,16 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { drag_stop(x, y); } + public AltosMapPathPoint nearest(int x, int y) { + notice_user_input(); + if (path == null) + return null; + if (transform == null) + return null; + AltosLatLon at = transform.screen_lat_lon(new AltosPointInt(x, y)); + return path.nearest(at); + } + public AltosMap(AltosMapInterface map_interface, int scale) { this.map_interface = map_interface; this.scale = scale;