source: Dev/trunk/src/client/dojox/geo/openlayers/GfxLayer.js @ 532

Last change on this file since 532 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 3.0 KB
Line 
1define([
2        "dojo/_base/declare",
3        "dojo/_base/connect",
4        "dojo/dom-style",
5        "dojox/gfx",
6        "dojox/gfx/matrix",
7        "./Feature",
8        "./Layer"
9], function(declare, connect, style, gfx, matrix, Feature, Layer){
10
11        return declare("dojox.geo.openlayers.GfxLayer", Layer, {
12                // summary:
13                //              A layer dedicated to render dojox.geo.openlayers.GeometryFeature
14                // description:
15                //              A layer class for rendering geometries as dojox.gfx.Shape objects.
16                //              This layer class accepts Features which encapsulates graphic objects to be added to the map.
17                //              All objects should be added to this group.
18                // tags:
19                //              private
20                _viewport: null,
21
22                constructor: function(name, options){
23                        // summary:
24                        //              Constructs a new GFX layer.
25                        var s = gfx.createSurface(this.olLayer.div, 100, 100);
26                        this._surface = s;
27                        var vp;
28                        if(options && options.viewport){
29                                vp = options.viewport;
30                        }else{
31                                vp = s.createGroup();
32                        }
33                        this.setViewport(vp);
34                        connect.connect(this.olLayer, "onMapResize", this, "onMapResize");
35                        this.olLayer.getDataExtent = this.getDataExtent;
36                },
37
38                getViewport: function(){
39                        // summary:
40                        //              Gets the viewport
41                        // tags:
42                        //              internal
43                        return this._viewport;
44                },
45
46                setViewport: function(g){
47                        // summary:
48                        //              Sets the viewport
49                        // g: dojox.gfx.Group
50                        // tags:
51                        //              internal
52                        if(this._viewport){
53                                this._viewport.removeShape();
54                        }
55                        this._viewport = g;
56                        this._surface.add(g);
57                },
58
59                onMapResize: function(){
60                        // summary:
61                        //              Called when map is resized.
62                        // tags:
63                        //              protected
64                        this._surfaceSize();
65                },
66
67                setMap: function(map){
68                        // summary:
69                        //              Sets the map for this layer.
70                        // tags:
71                        //              protected
72                        this.inherited(arguments);
73                        this._surfaceSize();
74                },
75
76                getDataExtent: function(){
77                        // summary:
78                        //              Get data extent
79                        // tags:
80                        //              private
81                        var ret = this._surface.getDimensions();
82                        return ret;
83                },
84
85                getSurface: function(){
86                        // summary:
87                        //              Get the underlying dojox.gfx.Surface
88                        // returns:
89                        //              The dojox.gfx.Surface this layer uses to draw its GFX rendering.
90                        return this._surface; // dojox.gfx.Surface
91                },
92
93                _surfaceSize: function(){
94                        // summary:
95                        //              Recomputes the surface size when being resized.
96                        // tags:
97                        //              private
98                        var s = this.olLayer.map.getSize();
99                        this._surface.setDimensions(s.w, s.h);
100                },
101
102                moveTo: function(event){
103                        // summary:
104                        //              Called when this layer is moved or zoomed.
105                        // event:
106                        //              The event
107                        var s = style.get(this.olLayer.map.layerContainerDiv);
108                        var left = parseInt(s.left);
109                        var top = parseInt(s.top);
110
111                        if(event.zoomChanged || left || top){
112                                var d = this.olLayer.div;
113
114                                style.set(d, {
115                                        left: -left + "px",
116                                        top: -top + "px"
117                                });
118
119                                if(this._features == null){
120                                        return;
121                                }
122                                var vp = this.getViewport();
123
124                                vp.setTransform(matrix.translate(left, top));
125
126                                this.inherited(arguments);
127
128                        }
129                },
130
131                added: function(){
132                        // summary:
133                        //              Called when added to a map.
134                        this.inherited(arguments);
135                        this._surfaceSize();
136                }
137
138        });
139});
Note: See TracBrowser for help on using the repository browser.