~dongpo-deng/sahana-eden/test

« back to all changes in this revision

Viewing changes to static/scripts/gis/openlayers/lib/OpenLayers/Layer/WorldWind.js

  • Committer: Deng Dongpo
  • Date: 2010-08-01 09:29:44 UTC
  • Revision ID: dongpo@dhcp-21193.iis.sinica.edu.tw-20100801092944-8t9obt4xtl7otesb
initial

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD
 
2
 * license.  See http://svn.openlayers.org/trunk/openlayers/license.txt for the
 
3
 * full text of the license. */
 
4
 
 
5
 
 
6
/**
 
7
 * @requires OpenLayers/Layer/Grid.js
 
8
 */
 
9
 
 
10
/**
 
11
 * Class: OpenLayers.Layer.WorldWind
 
12
 * 
 
13
 * Inherits from:
 
14
 *  - <OpenLayers.Layer.Grid>
 
15
 */
 
16
OpenLayers.Layer.WorldWind = OpenLayers.Class(OpenLayers.Layer.Grid, {
 
17
    
 
18
    DEFAULT_PARAMS: {
 
19
    },
 
20
 
 
21
    /**
 
22
     * APIProperty: isBaseLayer
 
23
     * WorldWind layer is a base layer by default.
 
24
     */
 
25
    isBaseLayer: true,    
 
26
 
 
27
    
 
28
    /** 
 
29
     * APIProperty: lzd
 
30
     * LevelZeroTileSizeDegrees
 
31
     */
 
32
    lzd: null,
 
33
 
 
34
    /**
 
35
     * APIProperty: zoomLevels
 
36
     * Number of zoom levels.
 
37
     */
 
38
    zoomLevels: null,
 
39
    
 
40
    /**
 
41
     * Constructor: OpenLayers.Layer.WorldWind
 
42
     * 
 
43
     * Parameters:
 
44
     * name - {String} Name of Layer
 
45
     * url - {String} Base URL  
 
46
     * lzd - {Float} Level zero tile size degrees 
 
47
     * zoomLevels - {Int} number of zoom levels
 
48
     * params - {Object} additional parameters
 
49
     * options - {Object} additional options
 
50
     */
 
51
    initialize: function(name, url, lzd, zoomLevels, params, options) {
 
52
        this.lzd = lzd;
 
53
        this.zoomLevels = zoomLevels;
 
54
        var newArguments = [];
 
55
        newArguments.push(name, url, params, options);
 
56
        OpenLayers.Layer.Grid.prototype.initialize.apply(this, newArguments);
 
57
        this.params = OpenLayers.Util.applyDefaults(
 
58
            this.params, this.DEFAULT_PARAMS
 
59
        );
 
60
    },
 
61
    /**
 
62
     * Method: addTile
 
63
     * 
 
64
     * Parameters:
 
65
     * bounds - {<OpenLayers.Bounds>}
 
66
     * position - {<OpenLayers.Pixel>}
 
67
     * 
 
68
     * Returns:
 
69
     * {<OpenLayers.Tile.Image>} The added OpenLayers.Tile.Image
 
70
     */
 
71
    addTile:function(bounds,position) {
 
72
        return new OpenLayers.Tile.Image(this, position, bounds, 
 
73
                                             null, this.tileSize);
 
74
    },
 
75
 
 
76
    /**
 
77
     * Method: getZoom
 
78
     * Convert map zoom to WW zoom.
 
79
     */
 
80
    getZoom: function () {
 
81
        var zoom = this.map.getZoom();
 
82
        var extent = this.map.getMaxExtent();
 
83
        zoom = zoom - Math.log(this.maxResolution / (this.lzd/512))/Math.log(2);
 
84
        return zoom;
 
85
    },
 
86
 
 
87
    /**
 
88
     * Method: getURL
 
89
     *
 
90
     * Parameters:
 
91
     * bounds - {<OpenLayers.Bounds>} 
 
92
     *
 
93
     * Returns:
 
94
     * {String} A string with the layer's url and parameters and also the 
 
95
     *           passed-in bounds and appropriate tile size specified as 
 
96
     *           parameters
 
97
     */
 
98
    getURL: function (bounds) {
 
99
        bounds = this.adjustBounds(bounds);
 
100
        var zoom = this.getZoom();
 
101
        var extent = this.map.getMaxExtent();
 
102
        var deg = this.lzd/Math.pow(2,this.getZoom());
 
103
        var x = Math.floor((bounds.left - extent.left)/deg);
 
104
        var y = Math.floor((bounds.bottom - extent.bottom)/deg);
 
105
        if (this.map.getResolution() <= (this.lzd/512)
 
106
            && this.getZoom() <= this.zoomLevels) {
 
107
            return this.getFullRequestString(
 
108
              { L: zoom, 
 
109
                X: x,
 
110
                Y: y
 
111
              });
 
112
        } else {
 
113
            return OpenLayers.Util.getImagesLocation() + "blank.gif";
 
114
        }
 
115
 
 
116
    },
 
117
 
 
118
    CLASS_NAME: "OpenLayers.Layer.WorldWind"
 
119
});