On Wed, May 13, 2009 at 01:13:01PM -0700, Simo D wrote:
> 
> Hi list, I'm trying to add custom popups on three GML layers which contains
> GeoRSS feed.
> 
> My code is composed by three layers declarated like this.
> 
> var gdacs_earth = new OpenLayers.Layer.GML("Earthquakes (GDACS)",
> "feedaddress", {format: georss_format, styleMap: createStyle('iconpath')});   
> 
> Where georss_format is        var georss_format = new
> OpenLayers.Format.GeoRSS(in_options);
> 
> 
> Then i attach three   var eqpopups = new
> OpenLayers.Control.SelectFeature(gdacs_earth, GeorssPopups.init());
> map.addControl(eqpopups); eqpopups.activate(); 

Can't do that. Gotta do one, with three layers passed in the first arg,
and that will only work in 2.8/trunk.

-- Chris

> obviously with different variable names.
> 
> GeorssPopups is a hash: 
> var GeorssPopups = {
>       init: function(){
>               return  {onSelect: this.onFeatureSelect, onUnselect:
> this.onFeatureUnselect};
> 
>       }       ,
>       onFeatureSelect: function(feature){
>                 var popup = new OpenLayers.Popup.FramedCloud("featurePopup",
>                                   
> feature.geometry.getBounds().getCenterLonLat(),
>                                   new OpenLayers.Size(100,100),
>                                   "<h2>"+feature.attributes.title + "</h2>" +
>                                   feature.attributes.description,
>                                   null, true,
> function(){map.removePopup(feature.popup);
>                                                                               
>                             feature.popup.destroy();
>                                                                               
>                             feature.popup = null;});
>          feature.popup = popup;   
>          map.addPopup(popup);
>       },
>       onFeatureUnselect: function(feature) {
>                   if (feature.popup) {        
>                       map.removePopup(feature.popup);
>                       feature.popup.destroy();
>                       feature.popup = null;
>                   }
>               }
> };
> 
> 
> The problem is that on most browsers this solution works only for the last
> layer declarated except for Safari 4 where all works fine.

Safari 4 is whacked. The former is the expected behavior. This is
because browsers will not let us catch events through the top SVG
element on the lower level elements. As a result, we've extended the
SelectFeature control to be able to take efeatures from *all* layers and
put them in the same SVG element.

> It seems that the listener associated with the SelectFeture method listens
> only on the last GML layer declared. 

> If I declare one layer with GML class
> and others with the GeoRSS class it works. 

Yes, Because the GeoRSS class uses markers, and doens't have the same
behavior because no SVG is involved.

> I also tried to declare two
> layers from GML with only one having the selectFeature associated and it
> breaks, I can see the icons but no frameCloud appears.

The clicks aren't getting there.


> Can you help me? Having nice popups on GeoRSS it's important.
> -- 
> View this message in context: 
> http://n2.nabble.com/Popup-problems-on-different-GML-layers-with-GeoRSS-format-tp2886288p2886288.html
> Sent from the OpenLayers Users mailing list archive at Nabble.com.
> 
> _______________________________________________
> Users mailing list
> [email protected]
> http://openlayers.org/mailman/listinfo/users

-- 
Christopher Schmidt
MetaCarta
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to