code: public void setZoom(int zoom)
      {
          if (zoom == this.zoomLevel)
          {
              return;
          }
  
          TileFactoryInfo info = getTileFactory().getInfo();
          // don't repaint if we are out of the valid zoom levels
          if (info != null && (zoom < info.getMinimumZoomLevel() || zoom > info.getMaximumZoomLevel()))
          {
              return;
          }
  
          // if(zoom >= 0 && zoom <= 15 && zoom != this.zoom) {
          int oldzoom = this.zoomLevel;
          Point2D oldCenter = getCenter();
          Dimension oldMapSize = getTileFactory().getMapSize(oldzoom);
          this.zoomLevel = zoom;
          this.firePropertyChange("zoom", oldzoom, zoom);
  
          Dimension mapSize = getTileFactory().getMapSize(zoom);
  
          setCenter(new Point2D.Double(oldCenter.getX() * (mapSize.getWidth() / oldMapSize.getWidth()), oldCenter.getY()
                  * (mapSize.getHeight() / oldMapSize.getHeight())));
  
          repaint();
      }
docs: Set the current zoom level
  @param zoom the new zoom level