app/models/wms.rb in gb_mapfish_appserver-0.9.4 vs app/models/wms.rb in gb_mapfish_appserver-0.9.5
- old
+ new
@@ -7,9 +7,42 @@
def initialize(name)
@name = name
end
+ # return SLD for selection
+ def self.sld_selection(layer, filter_property, filter_values)
+ sld = '<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" version="1.0.0" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">'
+ sld << "<NamedLayer>"
+ sld << "<Name>#{layer.name}</Name>"
+ sld << "<UserStyle>"
+ sld << "<Name>default</Name>"
+ sld << "<FeatureTypeStyle>"
+
+ filter_values.each do |value|
+ # NOTE: use a separate rule for each value as workaround, as combined filter with <ogc:Or> does not work as expected
+ sld << "<Rule>"
+ sld << "<Name>show-#{value}</Name>"
+ sld << '<ogc:Filter>'
+ sld << "<ogc:PropertyIsEqualTo>"
+ sld << "<ogc:PropertyName>#{filter_property}</ogc:PropertyName>"
+ sld << "<ogc:Literal>#{value}</ogc:Literal>"
+ sld << "</ogc:PropertyIsEqualTo>"
+ sld << "</ogc:Filter>"
+ sld << layer.selection_symbolizer
+ sld << "<MinScaleDenominator>0</MinScaleDenominator>"
+ sld << "<MaxScaleDenominator>999999999</MaxScaleDenominator>"
+ sld << "</Rule>"
+ end
+
+ sld << "</FeatureTypeStyle>"
+ sld << "</UserStyle>"
+ sld << "</NamedLayer>"
+ sld << "</StyledLayerDescriptor>"
+
+ sld
+ end
+
def self.access_filters(ability, user, topic_name, layers)
access_filters = {}
unless topic_name.blank?
layers.each do |layer|
access_filter = ability.access_filter("WMS", topic_name, layer)