summaryrefslogtreecommitdiff
path: root/js/dojo-1.7.2/dojox/geo/openlayers/widget/Map.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo-1.7.2/dojox/geo/openlayers/widget/Map.js')
-rw-r--r--js/dojo-1.7.2/dojox/geo/openlayers/widget/Map.js161
1 files changed, 161 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/geo/openlayers/widget/Map.js b/js/dojo-1.7.2/dojox/geo/openlayers/widget/Map.js
new file mode 100644
index 0000000..da29758
--- /dev/null
+++ b/js/dojo-1.7.2/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();
+ }
+ });
+});