[OpenLayers-Users] Popup problems on different GML layers with GeoRSS format

Christopher Schmidt crschmidt at metacarta.com
Wed May 13 16:31:38 EDT 2009


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
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users

-- 
Christopher Schmidt
MetaCarta



More information about the Users mailing list