More trip planner testing with colors
[busui.git] / labs / openlayers / lib / OpenLayers / Layer / WorldWind.js
blob:a/labs/openlayers/lib/OpenLayers/Layer/WorldWind.js -> blob:b/labs/openlayers/lib/OpenLayers/Layer/WorldWind.js
  /* Copyright (c) 2006-2010 by OpenLayers Contributors (see authors.txt for
  * full list of contributors). Published under the Clear BSD license.
  * See http://svn.openlayers.org/trunk/openlayers/license.txt for the
  * full text of the license. */
   
   
  /**
  * @requires OpenLayers/Layer/Grid.js
  */
   
  /**
  * Class: OpenLayers.Layer.WorldWind
  *
  * Inherits from:
  * - <OpenLayers.Layer.Grid>
  */
  OpenLayers.Layer.WorldWind = OpenLayers.Class(OpenLayers.Layer.Grid, {
   
  DEFAULT_PARAMS: {
  },
   
  /**
  * APIProperty: isBaseLayer
  * WorldWind layer is a base layer by default.
  */
  isBaseLayer: true,
   
   
  /**
  * APIProperty: lzd
  * LevelZeroTileSizeDegrees
  */
  lzd: null,
   
  /**
  * APIProperty: zoomLevels
  * Number of zoom levels.
  */
  zoomLevels: null,
   
  /**
  * Constructor: OpenLayers.Layer.WorldWind
  *
  * Parameters:
  * name - {String} Name of Layer
  * url - {String} Base URL
  * lzd - {Float} Level zero tile size degrees
  * zoomLevels - {Int} number of zoom levels
  * params - {Object} additional parameters
  * options - {Object} additional options
  */
  initialize: function(name, url, lzd, zoomLevels, params, options) {
  this.lzd = lzd;
  this.zoomLevels = zoomLevels;
  var newArguments = [];
  newArguments.push(name, url, params, options);
  OpenLayers.Layer.Grid.prototype.initialize.apply(this, newArguments);
  this.params = OpenLayers.Util.applyDefaults(
  this.params, this.DEFAULT_PARAMS
  );
  },
  /**
  * Method: addTile
  *
  * Parameters:
  * bounds - {<OpenLayers.Bounds>}
  * position - {<OpenLayers.Pixel>}
  *
  * Returns:
  * {<OpenLayers.Tile.Image>} The added OpenLayers.Tile.Image
  */
  addTile:function(bounds,position) {
  return new OpenLayers.Tile.Image(this, position, bounds,
  null, this.tileSize);
  },
   
  /**
  * Method: getZoom
  * Convert map zoom to WW zoom.
  */
  getZoom: function () {
  var zoom = this.map.getZoom();
  var extent = this.map.getMaxExtent();
  zoom = zoom - Math.log(this.maxResolution / (this.lzd/512))/Math.log(2);
  return zoom;
  },
   
  /**
  * Method: getURL
  *
  * Parameters:
  * bounds - {<OpenLayers.Bounds>}
  *
  * Returns:
  * {String} A string with the layer's url and parameters and also the
  * passed-in bounds and appropriate tile size specified as
  * parameters
  */
  getURL: function (bounds) {
  bounds = this.adjustBounds(bounds);
  var zoom = this.getZoom();
  var extent = this.map.getMaxExtent();
  var deg = this.lzd/Math.pow(2,this.getZoom());
  var x = Math.floor((bounds.left - extent.left)/deg);
  var y = Math.floor((bounds.bottom - extent.bottom)/deg);
  if (this.map.getResolution() <= (this.lzd/512)
  && this.getZoom() <= this.zoomLevels) {
  return this.getFullRequestString(
  { L: zoom,
  X: x,
  Y: y
  });
  } else {
  return OpenLayers.Util.getImagesLocation() + "blank.gif";
  }
   
  },
   
  CLASS_NAME: "OpenLayers.Layer.WorldWind"
  });