code: def change_zoom(self, zoom):
          '''zoom in or out by zoom factor, keeping centered'''
          state = self.state
          if self.mouse_pos:
              (x,y) = (self.mouse_pos.x, self.mouse_pos.y)
          else:
              (x,y) = (state.width/2, state.height/2)
          (lat,lon) = self.coordinates(x, y)
          state.ground_width *= zoom
          # limit ground_width to sane values
          state.ground_width = max(state.ground_width, 20)
          state.ground_width = min(state.ground_width, 20000000)
          self.re_center(x,y, lat, lonf change_zoom(self, zoom):
          '''zoom in or out by zoom factor, keeping centered'''
          state = self.state
          if self.mouse_pos:
              (x,y) = (self.mouse_pos.x, self.mouse_pos.y)
          else:
              (x,y) = (state.width/2, state.height/2)
          (lat,lon) = self.coordinates(x, y)
          state.ground_width *= zoom
          # limit ground_width to sane values
          state.ground_width = max(state.ground_width, 20)
          state.ground_width = min(state.ground_width, 20000000)
          self.re_center(x,y, lat, lon)
docs: zoom in or out by zoom factor, keeping centered