Changeset 290


Ignore:
Timestamp:
03/28/09 15:40:51 (8 years ago)
Author:
elemoine
Message:

(a) popup example refactoring, and (b) show how to unselect feature when popup is closed, no functional change

File:
1 edited

Legend:

Unmodified
Added
Removed
  • core/trunk/geoext/examples/popup.js

    r287 r290  
    1     var mapwin, mapPanel, pop;
    2     Ext.onReady(function() {
     1// make the references to the map panel and the popup
     2// global, this is useful for looking at their states
     3// from the console
     4var mapPanel, popup;
    35
    4         /*
    5          * Set up the vector layer.
    6          *
    7          * Will need a reference to the layer later when
    8          * giving it to a SelectFeature control to trigger
    9          * the popups.
    10          *
    11          */
    12         var vector = new OpenLayers.Layer.Vector("Vector Layer",{
    13             styleMap: new OpenLayers.StyleMap()
     6Ext.onReady(function() {
     7
     8    // create a vector layer, add a feature into it
     9    var vectorLayer = new OpenLayers.Layer.Vector("vector");
     10    vectorLayer.addFeatures(
     11        new OpenLayers.Feature.Vector(
     12            new OpenLayers.Geometry.Point(-45, 5)
     13        )
     14    );
     15
     16    // create select feature control
     17    var selectCtrl = new OpenLayers.Control.SelectFeature(vectorLayer);
     18
     19    // define "createPopup" function
     20    var bogusMarkup = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit."
     21    function createPopup(feature) {
     22        popup = new GeoExt.Popup({
     23            title: 'My Popup',
     24            feature: feature,
     25            width:200,
     26            html: bogusMarkup,
     27            collapsible: true
    1428        });
    15 
    16         x = -45;
    17         y = 5;
    18 
    19         var point = new OpenLayers.Geometry.Point(x,y);
    20         var feature = new OpenLayers.Feature.Vector(point, {
    21             name : "MyFeature",
    22             id : "42"
    23         });
    24         vector.addFeatures(feature);
    25 
    26         mapwin = new Ext.Window({
    27             layout: "fit",
    28             title: "Map",
    29             closeAction: "hide",
    30             width: 650,
    31             height: 356,
    32             x: 50,
    33             y: 100,
    34             items: {
    35                 xtype: "gx_mappanel",
    36                 region: "center",
    37                 layers: [
    38                     new OpenLayers.Layer.WMS(
    39                         "OpenLayers WMS",
    40                         "http://labs.metacarta.com/wms/vmap0",
    41                         {layers: 'basic'} ),
    42                     vector
    43                 ]
     29        // unselect feature when the popup
     30        // is closed
     31        popup.on({
     32            close: function() {
     33                if(OpenLayers.Util.indexOf(vectorLayer.selectedFeatures,
     34                                           this.feature) > -1) {
     35                    selectCtrl.unselect(this.feature);
     36                }
    4437            }
    4538        });
     39        popup.addToMapPanel(mapPanel);
     40    }
    4641
    47         mapwin.show();
    48 
    49         mapPanel = mapwin.items.get(0);
    50 
    51         var select = new OpenLayers.Control.SelectFeature(vector, {
    52             onSelect : function(feature){
    53                 openPopup(feature);
    54             }
    55         });
    56        
    57         mapPanel.map.addControl(select);
    58         select.activate();
    59 
     42    // create popup on "featureselected"
     43    vectorLayer.events.on({
     44        featureselected: function(e) {
     45            createPopup(e.feature);
     46        }
    6047    });
    6148
     49    // create Ext window including a map panel
     50    var mapwin = new Ext.Window({
     51        layout: "fit",
     52        title: "Map",
     53        closeAction: "hide",
     54        width: 650,
     55        height: 356,
     56        x: 50,
     57        y: 100,
     58        items: {
     59            xtype: "gx_mappanel",
     60            region: "center",
     61            layers: [
     62                new OpenLayers.Layer.WMS(
     63                    "OpenLayers WMS",
     64                    "http://labs.metacarta.com/wms/vmap0",
     65                    {layers: 'basic'} ),
     66                vectorLayer
     67            ]
     68        }
     69    });
     70    mapwin.show();
    6271
    63     function openPopup(feature){
    64       pop = new GeoExt.Popup({
    65         title: 'My Popup',
    66         feature: feature,
    67         width:200,
    68         html: bogusMarkup,
    69         collapsible: true
    70       });
    71      
    72       pop.addToMapPanel(mapPanel);
    73     }
    74 
    75     var bogusMarkup = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit."
    76 
    77 
     72    mapPanel = mapwin.items.get(0);
     73    mapPanel.map.addControl(selectCtrl);
     74    selectCtrl.activate();
     75});
Note: See TracChangeset for help on using the changeset viewer.