diff options
Diffstat (limited to 'js/dojo-1.7.2/dojox/geo/openlayers/GfxLayer.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/geo/openlayers/GfxLayer.js | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/geo/openlayers/GfxLayer.js b/js/dojo-1.7.2/dojox/geo/openlayers/GfxLayer.js new file mode 100644 index 0000000..49faa5e --- /dev/null +++ b/js/dojo-1.7.2/dojox/geo/openlayers/GfxLayer.js @@ -0,0 +1,142 @@ +//>>built +define("dojox/geo/openlayers/GfxLayer", ["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/connect", + "dojo/_base/html", + "dojox/gfx", + "dojox/gfx/_base", + "dojox/gfx/shape", + "dojox/gfx/path", + "dojox/gfx/matrix", + "dojox/geo/openlayers/Feature", + "dojox/geo/openlayers/Layer"], function(dojo, declare, connect, html, gfx, gbase, shape, + path, matrix, Feature, Layer){ + /*===== + var Layer = dojox.geo.openlayers.Layer; + =====*/ + return declare("dojox.geo.openlayers.GfxLayer", Layer, { + // summary: + // A layer dedicated to render dojox.geo.openlayers.GeometryFeature + // description: + // A layer class for rendering geometries as dojox.gfx.Shape objects. + // This layer class accepts Features which encapsulates graphic objects to be added to the map. + // All objects should be added to this group. + // tags: + // private + _viewport : null, + + constructor : function(name, options){ + // summary: + // Constructs a new GFX layer. + var s = dojox.gfx.createSurface(this.olLayer.div, 100, 100); + this._surface = s; + var vp; + if (options && options.viewport) + vp = options.viewport; + else + vp = s.createGroup(); + this.setViewport(vp); + dojo.connect(this.olLayer, "onMapResize", this, "onMapResize"); + this.olLayer.getDataExtent = this.getDataExtent; + }, + + getViewport : function(){ + // summary: + // Gets the viewport + // tags: + // internal + return this._viewport; + }, + + setViewport : function(g){ + // summary: + // Sets the viewport + // g: dojox.gfx.Group + // tags: + // internal + if (this._viewport) + this._viewport.removeShape(); + this._viewport = g; + this._surface.add(g); + }, + + onMapResize : function(){ + // summary: + // Called when map is resized. + // tag: + // protected + this._surfaceSize(); + }, + + setMap : function(map){ + // summary: + // Sets the map for this layer. + // tag: + // protected + this.inherited(arguments); + this._surfaceSize(); + }, + + getDataExtent : function(){ + // summary: + // Get data extent + // tags: + // private + var ret = this._surface.getDimensions(); + return ret; + }, + + getSurface : function(){ + // summary: + // Get the underlying dojox.gfx.Surface + // returns: dojox.gfx.Surface + // The dojox.gfx.Surface this layer uses to draw its GFX rendering. + return this._surface; + }, + + _surfaceSize : function(){ + // summary: + // Recomputes the surface size when being resized. + // tags: + // private + var s = this.olLayer.map.getSize(); + this._surface.setDimensions(s.w, s.h); + }, + + moveTo : function(event){ + // summary: + // Called when this layer is moved or zoommed. + // event: + // The event + var s = dojo.style(this.olLayer.map.layerContainerDiv); + var left = parseInt(s.left); + var top = parseInt(s.top); + + if (event.zoomChanged || left || top) { + var d = this.olLayer.div; + + dojo.style(d, { + left : -left + "px", + top : -top + "px" + }); + + if (this._features == null) + return; + var vp = this.getViewport(); + + vp.setTransform(matrix.translate(left, top)); + + this.inherited(arguments); + + } + }, + + added : function(){ + // summary: + // Called when added to a map. + this.inherited(arguments); + this._surfaceSize(); + } + + }); +}); |
