AW: [OpenLayers-Users] Call a SLD file for a Vector Layer

gbrun gbrun at myopera.com
Tue Jul 19 02:26:24 EDT 2011


Thanks for your reply!

So I tried to so something with the LoadURL. The SLD file is well called  
(I can see it in firebug), but the problem is that I now don't know how to  
link it with its layer. I'm still a newbie in webmapping. I think, what I  
want to do is quite easy, but I'm still not used to! Here is my current  
code:

		createWFSLayer: function(data, featureType) {
			
			//Style definition			
			var sld;
			var layername = featureType.name;
			var url_sld = "sld/"+layername+".xml";
			
			var format_sld = new OpenLayers.Format.SLD();
			
			OpenLayers.loadURL(url_sld, null, null, complete)
			
			function getDefaultStyle(sld, layerName) {
				var styles = sld.namedLayers[layerName].userStyles;
				var style;
				for(var i=0; i<styles.length; ++i) {
					style = styles[i];
					if(style.isDefault) {
						break;
					}
				}
				return style;
			};
			
			function complete(req) {
				sld = format_sld.read(req.responseXML || req.responseText);
				
				var styleMap = new OpenLayers.StyleMap({
						"default": getDefaultStyle(sld, layername)
				});
				return styleMap;
			}
			
			var styleWFS = {styleMap: styleMap}
			
			//Layer options
			var layerOptions, protocolOptions;
			//Layer options definition
			protocolOptions = {
				url: data.capability.request.getfeature.href.post,
				featureType: featureType.name,
				featureNS: featureType.featureNS,
				outputFormat: "json",
				readFormat: new OpenLayers.Format.GeoJSON()
			};
			//Layer protocol definition
			layerOptions = {
				protocol: new OpenLayers.Protocol.WFS(protocolOptions),
				strategies: [new OpenLayers.Strategy.Fixed()]
			};
			return  new OpenLayers.Layer.Vector(
				featureType.title,
				layerOptions,
				styleWFS
			);
		},

My problem comes from the "complete" function. I can't get its result for  
the styleMap property of my layer!

Geoffrey


On Mon, 18 Jul 2011 18:17:07 +0200, Arnd Wippermann  
<arnd.wippermann at web.de> wrote:

> Hi,
>
> As far as I know you can't load data with OpenLayers.Format.SLD(url). You
> have to do it with an ajax call, i.e LoadUrl.
>
> Arnd
>
> -----Ursprüngliche Nachricht-----
> Von: openlayers-users-bounces at lists.osgeo.org
> [mailto:openlayers-users-bounces at lists.osgeo.org] Im Auftrag von gbrun
> Gesendet: Montag, 18. Juli 2011 12:32
> An: openlayers-users at lists.osgeo.org
> Betreff: [OpenLayers-Users] Call a SLD file for a Vector Layer
>
> Hi list!
>
> I would like to apply SLD styles to my vector layers. It should work  
> like in
> this example : http://www.openlayers.org/dev/examples/sld.html
>
> But what I want to do is a little bit different: each layer has its own
> style. So I want that each vector layer calls its default style from a
> folder in my web application where styles are stored with the same name  
> as
> their specific layer. For example, my application has a vector layer  
> named
> "vector". In this case, this layer must called a SLD file named
> "vector.xml".
>
> The OpenLayers example uses a "OpenLayers.LoadURL()" method. I'm looking  
> for
> a different way: I would like to read the SLD response without this  
> method.
> It should look like this:
>
> var url_sld = "../sld/"+featureType.name+".xml";
> 			var format_sld = new OpenLayers.Format.SLD(url_sld);
> 			
> 			processResponse : function (response){
> 				var sld =
> format_sld.read(response.responseXML ||
> response.responseText);					
> 			};
>
> But it doesn't work. I think, there is something that I don't understand
> when I read the SLD response.
>
> Can someone clarify me this?
>
> Geoffrey
>
>
> --
> Using Opera's revolutionary email client: http://www.opera.com/mail/
> _______________________________________________
> Users mailing list
> Users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/openlayers-users
>


-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Users mailing list