Bienvenue sur PostGIS.fr

Bienvenue sur PostGIS.fr , le site de la communauté des utilisateurs francophones de PostGIS.

PostGIS ajoute le support d'objets géographique à la base de données PostgreSQL. En effet, PostGIS "spatialise" le serverur PostgreSQL, ce qui permet de l'utiliser comme une base de données SIG.

Maintenu à jour, en fonction de nos disponibilités et des diverses sorties des outils que nous testons, nous vous proposons l'ensemble de nos travaux publiés en langue française.

source: trunk/workshop-routing-foss4g/web/OpenLayers/lib/OpenLayers/Layer/TileCache.js @ 76

Revision 76, 5.7 KB checked in by djay, 12 years ago (diff)

Ajout du répertoire web

  • Property svn:executable set to *
Line 
1/* Copyright (c) 2006-2010 by OpenLayers Contributors (see authors.txt for
2 * full list of contributors). Published under the Clear BSD license. 
3 * See http://svn.openlayers.org/trunk/openlayers/license.txt for the
4 * full text of the license. */
5
6
7/**
8 * @requires OpenLayers/Layer/Grid.js
9 */
10
11/**
12 * Class: OpenLayers.Layer.TileCache
13 * A read only TileCache layer.  Used to requests tiles cached by TileCache in
14 *     a web accessible cache.  This means that you have to pre-populate your
15 *     cache before this layer can be used.  It is meant only to read tiles
16 *     created by TileCache, and not to make calls to TileCache for tile
17 *     creation.  Create a new instance with the
18 *     <OpenLayers.Layer.TileCache> constructor.
19 *
20 * Inherits from:
21 *  - <OpenLayers.Layer.Grid>
22 */
23OpenLayers.Layer.TileCache = OpenLayers.Class(OpenLayers.Layer.Grid, {
24
25    /**
26     * APIProperty: isBaseLayer
27     * {Boolean} Treat this layer as a base layer.  Default is true.
28     */
29    isBaseLayer: true,
30   
31    /**
32     * APIProperty: format
33     * {String} Mime type of the images returned.  Default is image/png.
34     */
35    format: 'image/png',
36
37    /**
38     * APIProperty: serverResolutions
39     * {Array} A list of all resolutions available on the server.  Only set this
40     *     property if the map resolutions differs from the server.
41     */
42    serverResolutions: null,
43
44    /**
45     * Constructor: OpenLayers.Layer.TileCache
46     * Create a new read only TileCache layer.
47     *
48     * Parameters:
49     * name - {String} Name of the layer displayed in the interface
50     * url - {String} Location of the web accessible cache (not the location of
51     *     your tilecache script!)
52     * layername - {String} Layer name as defined in the TileCache
53     *     configuration
54     * options - {Object} Optional object with properties to be set on the
55     *     layer.  Note that you should speficy your resolutions to match
56     *     your TileCache configuration.  This can be done by setting
57     *     the resolutions array directly (here or on the map), by setting
58     *     maxResolution and numZoomLevels, or by using scale based properties.
59     */
60    initialize: function(name, url, layername, options) {
61        this.layername = layername;
62        OpenLayers.Layer.Grid.prototype.initialize.apply(this,
63                                                         [name, url, {}, options]);
64        this.extension = this.format.split('/')[1].toLowerCase();
65        this.extension = (this.extension == 'jpg') ? 'jpeg' : this.extension;
66    },   
67
68    /**
69     * APIMethod: clone
70     * obj - {Object}
71     *
72     * Returns:
73     * {<OpenLayers.Layer.TileCache>} An exact clone of this
74     *     <OpenLayers.Layer.TileCache>
75     */
76    clone: function (obj) {
77       
78        if (obj == null) {
79            obj = new OpenLayers.Layer.TileCache(this.name,
80                                                 this.url,
81                                                 this.layername,
82                                                 this.getOptions());
83        }
84
85        //get all additions from superclasses
86        obj = OpenLayers.Layer.Grid.prototype.clone.apply(this, [obj]);
87
88        // copy/set any non-init, non-simple values here
89
90        return obj;
91    },   
92   
93    /**
94     * Method: getURL
95     *
96     * Parameters:
97     * bounds - {<OpenLayers.Bounds>}
98     *
99     * Returns:
100     * {String} A string with the layer's url and parameters and also the
101     *     passed-in bounds and appropriate tile size specified as parameters.
102     */
103    getURL: function(bounds) {
104        var res = this.map.getResolution();
105        var bbox = this.maxExtent;
106        var size = this.tileSize;
107        var tileX = Math.round((bounds.left - bbox.left) / (res * size.w));
108        var tileY = Math.round((bounds.bottom - bbox.bottom) / (res * size.h));
109        var tileZ = this.serverResolutions != null ?
110            OpenLayers.Util.indexOf(this.serverResolutions, res) :
111            this.map.getZoom();
112        /**
113         * Zero-pad a positive integer.
114         * number - {Int}
115         * length - {Int}
116         *
117         * Returns:
118         * {String} A zero-padded string
119         */
120        function zeroPad(number, length) {
121            number = String(number);
122            var zeros = [];
123            for(var i=0; i<length; ++i) {
124                zeros.push('0');
125            }
126            return zeros.join('').substring(0, length - number.length) + number;
127        }
128        var components = [
129            this.layername,
130            zeroPad(tileZ, 2),
131            zeroPad(parseInt(tileX / 1000000), 3),
132            zeroPad((parseInt(tileX / 1000) % 1000), 3),
133            zeroPad((parseInt(tileX) % 1000), 3),
134            zeroPad(parseInt(tileY / 1000000), 3),
135            zeroPad((parseInt(tileY / 1000) % 1000), 3),
136            zeroPad((parseInt(tileY) % 1000), 3) + '.' + this.extension
137        ];
138        var path = components.join('/'); 
139        var url = this.url;
140        if (url instanceof Array) {
141            url = this.selectUrl(path, url);
142        }
143        url = (url.charAt(url.length - 1) == '/') ? url : url + '/';
144        return url + path;
145    },
146
147    /**
148     * Method: addTile
149     * Create a tile, initialize it, and add it to the layer div.
150     *
151     * Parameters:
152     * bounds - {<OpenLayers.Bounds>}
153     * position - {<OpenLayers.Pixel>}
154     *
155     * Returns:
156     * {<OpenLayers.Tile.Image>} The added <OpenLayers.Tile.Image>
157     */
158    addTile:function(bounds, position) {
159        var url = this.getURL(bounds);
160        return new OpenLayers.Tile.Image(this, position, bounds, 
161                                             url, this.tileSize);
162    },
163   
164    CLASS_NAME: "OpenLayers.Layer.TileCache"
165});
Note: See TracBrowser for help on using the repository browser.