code: function(viewportZoom) {
          if (this.viewer) {
              var count = this.viewer.world.getItemCount();
              if (count > 1) {
                  $.console.error('[Viewport.viewportToImageZoom] is not ' +
                      'accurate with multi-image.');
              } else if (count === 1) {
                  // It is better to use TiledImage.viewportToImageZoom
                  // because this._contentBoundsNoRotate can not be relied on
                  // with clipping.
                  var item = this.viewer.world.getItemAt(0);
                  return item.viewportToImageZoom(viewportZoom);
              }
          }
  
          var imageWidth = this._contentSizeNoRotate.x;
          var containerWidth = this._containerInnerSize.x;
          var scale = this._contentBoundsNoRotate.width;
          var viewportToImageZoomRatio = (containerWidth / imageWidth) * scale;
          return viewportZoom * viewportToImageZoomRatio;
      }
docs: Convert a viewport zoom to an image zoom.
  Image zoom: ratio of the original image size to displayed image size.
  1 means original image size, 0.5 half size...
  Viewport zoom: ratio of the displayed image's width to viewport's width.
  1 means identical width, 2 means image's width is twice the viewport's width...
  Note: not accurate with multi-image.
  @function
  @param {Number} viewportZoom The viewport zoom
  target zoom.
  @returns {Number} imageZoom The image zoom