X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosMap.java;h=85f95eef9cfdf3af49cae55224b6d1b165dd9ae5;hb=ba698c2cc48677735046d0881df9c180674e4082;hp=762054a33f158fcefb0698a00091359b97c6e5bd;hpb=103a50db50be55c2293468d273dd94472dd89d94;p=fw%2Faltos diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 762054a3..85f95eef 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -150,8 +150,10 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } public void set_transform() { - transform = new AltosMapTransform(width(), height(), zoom, centre); - repaint(); + if (centre != null) { + transform = new AltosMapTransform(width(), height(), zoom, centre); + repaint(); + } } private void set_zoom_label() { @@ -246,7 +248,9 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { public void add_mark(double lat, double lon, int state) { synchronized(marks) { - marks.add(map_interface.new_mark(lat, lon, state)); + AltosMapMark mark = map_interface.new_mark(lat, lon, state); + if (mark != null) + marks.add(mark); } repaint(); } @@ -285,6 +289,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { tiles.remove(point); cache.set_cache_size((width() / AltosMap.px_size + 2) * (height() / AltosMap.px_size + 2)); + for (int y = (int) upper_left.y; y <= lower_right.y; y += AltosMap.px_size) { for (int x = (int) upper_left.x; x <= lower_right.x; x += AltosMap.px_size) { AltosPointInt point = new AltosPointInt(x, y); @@ -300,11 +305,15 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } } - public void set_load_params(double lat, double lon, int radius, AltosMapTileListener listener) { + 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; load_centre = new AltosLatLon(lat, lon); load_radius = radius; load_listener = listener; centre(lat, lon); + tiles.clear(); make_tiles(); for (AltosMapTile tile : tiles.values()) { tile.add_store_listener(this); @@ -319,7 +328,8 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } public void paint() { - make_tiles(); + if (centre != null) + make_tiles(); for (AltosMapTile tile : tiles.values()) tile.paint(transform); @@ -411,6 +421,5 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { line = map_interface.new_line(); path = map_interface.new_path(); set_zoom_label(); - centre(0, 0); } }