X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosMap.java;h=3877c7dce7a3631419c1c7e4ac37011c493fc267;hb=HEAD;hp=9e5f578d67131fb415d6017f16510eb366e5b67d;hpb=5c957107ee5917d865eb866319f86cf8c109f212;p=fw%2Faltos diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 9e5f578d..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_13; +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 @@ -222,8 +222,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { 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 */ @@ -250,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); @@ -262,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) { @@ -290,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() { @@ -341,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); } @@ -488,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;