//>>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: // // |
// // 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 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(); } }); });