[OpenLayers-Users] closing popup window after layer redraw

tvnc1979 tvnc1979 at gmail.com
Tue Nov 1 13:10:25 EDT 2011


each time my layer is redrawn my popups windows are closed. I would like to 
left them open as long as user want. how could I make this work.

in practice when I open popup window on a feature, window closes in 20 sec when 
layers is refreshed to import new features. I would like that popup window 
stays open till user closes it by clicking on it.
when i remove function "beforefeatureremoved": onMarkerBeforeFeatureRemoved 
popups window can not been removed after layer refresh. it does not react at all


var test = new OpenLayers.Layer.Vector( "TEST", {
            styleMap: testStil,           
            projection: map.displayProjection,
            strategies: [new OpenLayers.Strategy.Fixed
()],				 
                    protocol: new OpenLayers.Protocol.HTTP({
                    
                            url: test source,
                            format: new OpenLayers.Format.Text({
                            extractStyles: false, 
                            extractAttributes: true
                        })
                    })
                });
    
    window.setInterval(UpdateKmlLayer, 20000, test);
    
    function UpdateKmlLayer(layer) {
                    
                    layer.loaded = false;
                    layer.refresh({ force: true, params: { 'key': Math.random
()} 
    });
    
    test.events.on({
                    "featureselected": onFeatureSelect,
                    "featureunselected": onFeatureUnselect,
                    "beforefeatureremoved": onMarkerBeforeFeatureRemoved
                });
    
    function onFeatureSelect(event) {
                var feature = event.feature;
                var content = '<table class="z">something</table>';
              
                popup = new OpenLayers.Popup.FramedCloud("chicken", 
                                         feature.geometry.getBounds
().getCenterLonLat(),
                                         new OpenLayers.Size(100,100),
                                         content,
                                         null, true, onPopupClose);
                feature.popup = popup;
                map.addPopup(popup);
    
    function onFeatureUnselect(event) {
                var feature = event.feature;
                if(feature.popup) {
                    map.removePopup(feature.popup);
                    feature.popup.destroy();
                    delete feature.popup;
                    popup = null;
                    $("#o").val("");
                }
            }
    
    function onMarkerBeforeFeatureRemoved(evt){
         if(evt.feature.popup){
           
             map.removePopup(evt.feature.popup);
             evt.feature.popup.destroy();
             delete evt.feature.popup;
         }
         
    }
            }        





More information about the Users mailing list