diff options
| author | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
|---|---|---|
| committer | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
| commit | b62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch) | |
| tree | 86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo/dojox/geo/openlayers/widget/Map.js | |
Diffstat (limited to 'js/dojo/dojox/geo/openlayers/widget/Map.js')
| -rw-r--r-- | js/dojo/dojox/geo/openlayers/widget/Map.js | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/js/dojo/dojox/geo/openlayers/widget/Map.js b/js/dojo/dojox/geo/openlayers/widget/Map.js new file mode 100644 index 0000000..da29758 --- /dev/null +++ b/js/dojo/dojox/geo/openlayers/widget/Map.js @@ -0,0 +1,161 @@ +//>>built +define("dojox/geo/openlayers/widget/Map", ["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/array", + "dojo/_base/html", + "dojo/query", + "dijit/_Widget", + "dojox/geo/openlayers/Map", + "dojox/geo/openlayers/Layer", + "dojox/geo/openlayers/GfxLayer"], function(dojo, declare, array, html, query, Widget, Map, Layer, GfxLayer){ + /*===== + var Widget = dijit.Widget; + =====*/ + return declare("dojox.geo.openlayers.widget.Map", Widget, { + // summary: + // A widget version of the `dojox.geo.openlayers.Map` component. + // description: + // The `dojox.geo.openlayers.widget.Map` widget is the widget + // version of the `dojox.geo.openlayers.Map` component. + // With this widget, user can specify some attributes in the markup suach as + // + // * `baseLayerType`: The type of the base layer. Permitted values are + // * `initialLocation`: The initial location as for the dojox.geo.openlayers.Map.fitTo method + // * `touchHandler`: Tells if we attach touch handler or not. + // + // example: + // + // | <div id="map" dojoType="dojox.geo.openlayers.widget.Map" baseLayerType="Google" initialLocation="{ + // | position : [7.154126, 43.651748], + // | extent : 0.2 }" + // | style="background-color: #b5d0d0; width: 100%; height: 100%;"> + // + + // summay: + // Base layer type as defined in `dojox.geo.openlayer.BaseLayerType + // description: + // baseLayerType can be either + // * `OSM` + // * `WMS` + // * `Google` + // * `VirtualEarth` + // * `Yahoo` + // * `ArcGIS` + // baseLayerType : String + // Base layer type property. + baseLayerType : dojox.geo.openlayers.BaseLayerType.OSM, + + // summary: + // The part of the map shown at startup time. + // description: + // initial location is the string description of the location shown at + // startup time. Format is the same as for the `dojox.geo.openlayers.widget.Map.fitTo` + // method. + // | { + // | bounds : [ulx, uly, lrx, lry] + // | } + // The map is fit on the specified bounds expressed as decimal degrees latitude and longitude. + // The bounds are defined with their upper left and lower right corners coordinates. + // + // | { + // | position : [longitude, latitude], + // | extent : degrees + // | } + // The map is fit on the specified position showing the extent <extent> around + // the specified center position. + initialLocation : null, + + // summary: + // Tells if the touch handler should be attached to the map or not. + // description: + // Tells if the touch handler should be attached to the map or not. + // Touch handler handles touch events so that the widget can be used + // on mobile applications. + touchHandler : false, + + // summary: + // The underlying `dojox.geo.openlayers.Map` object. + // This is s readonly member. + map : null, + + startup : function(){ + // summary: + // Processing after the DOM fragment is added to the document + this.inherited(arguments); + this.map.initialFit({ + initialLocation : this.initialLocation + }); + }, + + buildRendering : function(){ + // summary: + // Construct the UI for this widget, creates the real dojox.geo.openlayers.Map object. + // tags: + // protected + this.inherited(arguments); + var div = this.domNode; + var map = new Map(div, { + baseLayerType : this.baseLayerType, + touchHandler : this.touchHandler + }); + this.map = map; + + this._makeLayers(); + }, + + _makeLayers : function(){ + // summary: + // Creates layers defined as markup. + // tags: + // private + var n = this.domNode; + var layers = /* ?? query. */query("> .layer", n); + array.forEach(layers, function(l){ + var type = l.getAttribute("type"); + var name = l.getAttribute("name"); + var cls = "dojox.geo.openlayers." + type; + var p = dojo.getObject(cls); + if (p) { + var layer = new p(name, {}); + if (layer) + this.map.addLayer(layer); + } + }, this); + }, + + resize : function(b){ + // summary: + // Resize the widget. + // description: + // Resize the domNode and the widget to the dimensions of a box of the following form: + // `{ l: 50, t: 200, w: 300: h: 150 }` + // b: undefined | Box | width, height + // If passed, denotes the new size of the widget. + // Can be either nothing (widget adapts to the div), + // a box, or a width and a height. + + var olm = this.map.getOLMap(); + + var box; + switch (arguments.length) { + case 0: + // case 0, do not resize the div, just the surface + break; + case 1: + // argument, override node box + box = dojo.mixin({}, b); + dojo.marginBox(olm.div, box); + break; + case 2: + // two argument, width, height + box = { + w : arguments[0], + h : arguments[1] + }; + dojo.marginBox(olm.div, box); + break; + } + olm.updateSize(); + } + }); +}); |
