FixedZoomLevels Layer
- Class Definition: trunk/openlayers/lib/OpenLayers/Layer/FixedZoomLevels.js
- API Reference: http://openlayers.org/doc/reference.html#OpenLayers.Layer.FixedZoomLevels
- Family Tree:
- OpenLayers.Layer.FixedZoomLevels
- Related Links:
Taken directly from class-definition header in OpenLayers/Layer/FixedZoomLevels.js
/** * Some Layers will already have established zoom levels (like google * or ve). Instead of trying to determine them and populate a resolutions[] * Array with those values, we will hijack the resolution functionality * here. * * When you subclass FixedZoomLevels: * * The initResolutions() call gets nullified, meaning no resolutions[] array * is set up. Which would be a big problem getResolution() in Layer, since * it merely takes map.zoom and indexes into resolutions[]... but.... * * The getResolution() call is also overridden. Instead of using the * resolutions[] array, we simply calculate the current resolution based * on the current extent and the current map size. But how will we be able * to calculate the current extent without knowing the resolution...? * * The getExtent() function is also overridden. Instead of calculating extent * based on the center point and the current resolution, we instead * calculate the extent by getting the lonlats at the top-left and * bottom-right by using the getLonLatFromViewPortPx() translation function, * taken from the pixel locations (0,0) and the size of the map. But how * will we be able to do lonlat-px translation without resolution....? * * The getZoomForResolution() method is overridden. Instead of indexing into * the resolutions[] array, we call OpenLayers.Layer.getExent(), passing in * the desired resolution. With this extent, we then call getZoomForExtent() * * * Whenever you implement a layer using OpenLayers.Layer.FixedZoomLevels, * it is your responsibility to provide the following three functions: * * - getLonLatFromViewPortPx() * - getViewPortPxFromLonLat() * - getZoomForExtent() * * ...those three functions should generally be provided by any reasonable * API that you might be working from. * * @class */
