Changeset 294


Ignore:
Timestamp:
03/30/09 22:44:40 (8 years ago)
Author:
dwins
Message:

Changes to accommodate GetFeatureInfo control

File:
1 edited

Legend:

Unmodified
Added
Removed
  • apps/opengeo/geoexplorer/trunk/lib/GeoExplorer.js

    r293 r294  
    3838   
    3939    /**
    40      * Property: mapPanel
    41      * {GeoExt.MapPanel} The application's map panel.
    42      */
    43     mapPanel: null,
    44    
    45     /**
    4640     * Property: layers
    4741     * {GeoExt.data.LayerStore} A store containing a record for each layer
     
    4943     */
    5044    layers: null,
     45
     46    /**
     47     * Property: mapPanel
     48     * {GeoExt.MapPanel} the MapPanel instance for the main viewport
     49     */
     50    mapPanel: null,
     51
     52    /**
     53     * Property: toolbarItems
     54     * {Array} An array containing toolbar items suitable for passing as a tbar: property
     55     * on an Ext component
     56     */
     57    toolbarItems: null,
    5158   
    5259    /**
     
    7077        // create the layers store
    7178        this.initLayers();
     79
     80        this.initMapControls();
     81        this.initToolbar();
    7282       
    7383        // place map in panel
     
    122132        });
    123133
     134        var toolbar = new Ext.Toolbar({
     135            region: 'north',
     136            items: this.toolbarItems
     137        });
     138
    124139        var viewport = new Ext.Viewport({
    125140            layout: "fit",
     
    128143                layout: "border",
    129144                deferredRender: false,
    130                 items: [this.mapPanel, westPanel]
     145                items: [toolbar, this.mapPanel, westPanel]
    131146            }
    132147        });
     
    171186                    conf.title || conf.name,
    172187                    ows,
    173                     {layers: conf.name},
     188                    {layers: conf.name, transparent: true},
    174189                    {isBaseLayer: false}
    175190                );
    176191                conf.layer = layer;
     192                layer.events.register("visibilitychanged", this, this.updateGFILayers);
    177193                // we could extend the record type with conf fields here
    178                 records.push(new GeoExt.data.LayerRecord(
    179                     conf, layer.id
    180                 ));
     194                records.push(new GeoExt.data.LayerRecord(conf, layer.id));
    181195            }
    182196        }
     
    195209       
    196210        win.show();
     211    },
     212
     213    initMapControls: function() {
     214        this.mapControls = {
     215            getFeatureInfo: new OpenLayers.Control.WMSGetFeatureInfo(this.initialConfig.ows, {
     216            })
     217        };
     218
     219        this.updateGFILayers();
     220
     221        this.mapControls.getFeatureInfo.events.register("getfeatureinfo", this, this.displayPopup);
     222
     223        for (var key in this.mapControls) {
     224            this.map.addControl(this.mapControls[key]);
     225        }
     226    },
     227
     228    initToolbar: function() {
     229        var toolGroup = "toolGroup";
     230        this.toolbarItems = [
     231            new Ext.Button({
     232                text: "GetFeatureInfo",
     233                enableToggle: true,
     234                toggleGroup: toolGroup,
     235                handler: function(toggled, item) {
     236                    if (toggled){
     237                        this.mapControls.getFeatureInfo.activate();
     238                    } else {
     239                        this.mapControls.getFeatureInfo.deactivate();
     240                    }
     241                },
     242                scope: this
     243            })
     244        ];
     245    },
     246
     247    updateGFILayers: function() {
     248        var layernames = [];
     249        for (var i = 0, len = this.map.layers.length; i < len; i++) {
     250            if (this.map.layers[i].params && this.map.layers[i].getVisibility()) {
     251                layernames.push(this.map.layers[i].params.LAYERS);
     252            }
     253        }
     254
     255        this.mapControls.getFeatureInfo.layers = layernames.join(",");
     256    },
     257
     258    displayPopup: function(evt){
     259        var html;
     260        if (evt.features && evt.features.length) {
     261            html =  'Found ' + evt.features.length + ' features';
     262        } else {
     263            html = evt.text;
     264        }
     265
     266        var lonlat = this.map.getLonLatFromPixel(evt.clickPosition);
     267        var win = new Ext.Window({
     268            html: html,
     269            title: "Feature Info",
     270            width: 250,
     271            lonlat: lonlat
     272        });
     273        this.mapPanel.add(win);
     274        win.show();
    197275    }
    198    
    199276});
Note: See TracChangeset for help on using the changeset viewer.