[OpenLayers-Users] Understanding events

Yves Moisan yves.moisan at boreal-is.com
Wed Dec 9 10:13:15 EST 2009


> Wrap your function in anonymous instead.

> layers[0].events.register("loadend", layers[0], function(evt){
>   //do what you have to do here...
>    selectFeature(layers[0],oFeatures[0].fid));
> });
> 

Well, the use case is a bit more complicated.  I calculate initial
bounds for a feature then select that feature.  Then if my feature array
has more than one element I iterate through it and then features don't
get selected :

if(oFeatures && oFeatures.length > 0)                  

{
     var bounds = oFeatures[0].geometry.getBounds();
	layers[0].events.register("loadend", layers[0], function(){
	selectFeature(layers[0],oFeatures[0].fid);                                                                             });

	for(var i = 1; i<oFeatures.length;++i)
                      {         
                        bounds.extend(oFeatures[i].geometry.getBounds());

                        layers[0].events.register("loadend", layers[0], function(){
                           selectFeature(layers[0],oFeatures[i].fid);});
    


I guess the event is triggered only once so iterating makes no sense ?
I thought it was the case so I just called the function directly in the
for like

selectFeature(layers[0],oFeatures[i].fid);

but that didn't work either probably because the code gets executed
before the loadend was fired.  Do I have to set up an explicit delay
here or somehow bubble the event ?

TIA,

Yves




More information about the Users mailing list