Modify stored latitude & longitude upon map center changes
authorjaviplx <javiplx@gmail.com>
Sun, 15 May 2011 16:39:16 +0000 (16:39 +0000)
committerjaviplx <javiplx@gmail.com>
Sun, 15 May 2011 16:39:16 +0000 (16:39 +0000)
git-svn-id: file:///svnroot/wifihood/branches/mapview-redesign@192 c51dfc6a-5949-4919-9c8e-f207a149c383

view.py

diff --git a/view.py b/view.py
index 913d02d..1444b8d 100755 (executable)
--- a/view.py
+++ b/view.py
@@ -112,6 +112,7 @@ class tile_loader :
     def set_params ( self , conf ) :
         self.rootdir = os.path.join( self.rootbase , str(conf.zoom) )
         self.__reftile , self.__refpix = self.get_reference( conf )
+        self.__zoom = conf.zoom
 
     def do_change_refpix ( self , dx , dy ) :
         self.__refpix[0] += dx
@@ -142,6 +143,12 @@ class tile_loader :
         lat = lat * math.pi / 180
         return math.modf( ( 1 - math.log( math.tan( lat ) + 1 / math.cos( lat ) ) / math.pi ) / 2 * 2 ** zoom )
 
+    def get_latlon ( self ) :
+        pixx , pixy = map( float , self.__refpix )
+        tilex , tiley = map( float , self.__reftile )
+        tiley = math.pi * ( 1 - 2 * ( tiley + pixy/self.tilesize ) / 2.0 ** self.__zoom )
+        return math.degrees( math.atan( math.sinh( tiley ) ) ) , ( tilex + pixx/self.tilesize ) / 2.0 ** self.__zoom * 360.0 - 180.0
+
     def get_tile ( self , tile ) :
         file = self.tilepath( self.__reftile[0] + tile[0] , self.__reftile[1] + tile[1] )
         try :
@@ -291,10 +298,12 @@ class simpleMapWidget ( AbstractmapWidget , gtk.Image ) :
     
     def do_change_refpix ( self , dx , dy ) :
         self._bg.do_change_refpix( dx , dy )
+        self.config.lat , self.config.lon = self._bg.tileloader.get_latlon()
         self.update_background()
 
     def do_change_reftile ( self , dx , dy ) :
         self._bg.do_change_reftile( dx , dy )
+        self.config.lat , self.config.lon = self._bg.tileloader.get_latlon()
         self.update_background()
 
     def do_change_zoomlevel ( self , dz ) :