X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosMap.java;h=adf52ab9469d0be1405a4295a201b92fe7dca718;hb=e0c318cdd32b3c3fed5099c754aea3ebc6186a0f;hp=59420d4b389bf7c2c4b27142419bdbd320ddd3c6;hpb=b8bdb432aacc1a273ee484a29a24b3768c274db6;p=fw%2Faltos diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 59420d4b..adf52ab9 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -166,6 +166,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { public boolean set_zoom(int zoom) { + notice_user_input(); if (AltosMap.min_zoom <= zoom && zoom <= AltosMap.max_zoom && zoom != this.zoom) { this.zoom = zoom; tiles.clear(); @@ -176,6 +177,29 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { return false; } + public boolean set_zoom_centre(int zoom, AltosPointInt centre) { + AltosLatLon mouse_lat_lon = null; + boolean ret; + + if (transform != null) + mouse_lat_lon = transform.screen_lat_lon(centre); + + ret = set_zoom(zoom); + + if (ret && mouse_lat_lon != null) { + AltosPointDouble new_mouse = transform.screen(mouse_lat_lon); + + double dx = width()/2.0 - centre.x; + double dy = height()/2.0 - centre.y; + + AltosLatLon new_centre = transform.screen_lat_lon(new AltosPointDouble(new_mouse.x + dx, new_mouse.y + dy)); + + centre(new_centre); + } + + return ret; + } + public int get_zoom() { return zoom; }