[OpenLayers-Users] Event registration in activate function

Alexandre Dube adube at mapgears.com
Wed Jan 7 16:02:22 EST 2009


Dear list,

  I'm writing my own Control and I need to register some events.  Doing 
so in the initialize function isn't good because some objects are not 
created yet ( like the map object ).  So I thought I could register them 
in the activate() func and unregister them in the deactivate() func.

  So far it was ok to do so, but now I'm facing a problem.  I need to 
register events that, when triggered, deactivate the control, and other 
events that, when triggered, reactivate the control.  It's a control 
that can contain multiple layers that come from the same source but have 
been normalized to render faster, so the user sees no difference when 
zooming.  The control change the opacity of a layer when the mouse is 
over it and because the features generated come from different sources, 
I need to deactivate the control while I'm zooming ( deactivate on 
loadstart, activate on loadend ).  This looks like this :

// inside the activate function()
        for (var key in this.layers){
            this.layers[key].events.register(
                "loadstart", this, this.deactivate);
            this.layers[key].events.register(
                "loadend", this, this.activate);
        }

  So basically I should unregister them in the deactivate function(), 
right ?  The problem is : if I deactivate the control, it will 
unregister the loadend event so it will not be reactivated in the end.  
Is there an other place I should register my events to avoid that 
behavior ?  I see in some other control registration on events in a 
draw() function.  Could I do something similar ?

-- 
Alexandre Dubé
Mapgears
www.mapgears.com




More information about the Users mailing list