docs: function (bounds) {
          var url;
          var center = bounds.getCenterLonLat();
          var mapSize = this.map.getSize();
  
          if (this.singleTile) {
            //set up the call for GETMAPIMAGE or GETDYNAMICMAPOVERLAY with
            //dynamic map parameters
            var params = {
              setdisplaydpi: OpenLayers.DOTS_PER_INCH,
              setdisplayheight: mapSize.h*this.ratio,
              setdisplaywidth: mapSize.w*this.ratio,
              setviewcenterx: center.lon,
              setviewcentery: center.lat,
              setviewscale: this.map.getScale()
            };
            
            if (this.useOverlay && !this.useAsyncOverlay) {
              //first we need to call GETVISIBLEMAPEXTENT to set the extent
              var getVisParams = {};
              getVisParams = OpenLayers.Util.extend(getVisParams, params);
              getVisParams.operation = "GETVISIBLEMAPEXTENT";
              getVisParams.version = "1.0.0";
              getVisParams.session = this.params.session;
              getVisParams.mapName = this.params.mapName;
              getVisParams.format = 'text/xml';
              url = this.getFullRequestString( getVisParams );
              
              OpenLayers.Request.GET({url: url, async: false});
            }
            //construct the full URL
            url = this.getFullRequestString( params );
          } else {
  
            //tiled version
            var currentRes = this.map.getResolution();
            var colidx = Math.floor((bounds.left-this.maxExtent.left)/currentRes);
            colidx = Math.round(colidx/this.tileSize.w);
            var rowidx = Math.floor((this.maxExtent.top-bounds.top)/currentRes);
            rowidx = Math.round(rowidx/this.tileSize.h);
  
            if (this.useHttpTile){
                url = this.getImageFilePath(
                     {
                         tilecol: colidx,
                         tilerow: rowidx,
                         scaleindex: this.resolutions.length - this.map.zoom - 1
                      });
  
            } else {
              url = this.getFullRequestString(
                     {
                         tilecol: colidx,
                         tilerow: rowidx,
                         scaleindex: this.resolutions.length - this.map.zoom - 1
                      });
            }
         }
         return url;
      }