Hi,
Thanks for you answers! Because it is so common, I was tempted to use a
shortcut:
width: +4;
But maybe it is not a good idea to introduce too many special rules.
As a shorter notation for
width: eval(num(prop("width", "default"))+4);
I then came up with
width: default::width + 4;
but it's basically the same, so I don't mind.
Sebastian
Komяpa wrote:
I would like to create transparent overlay for bridges and tunnels that
is 4 pixels wider than the main line style. How can this be done without
repeating all highway types?
In Halcyon this is done by accessing a special '_width' variable, which has
the width of the widest rendered stroke, so:
way :selected { z-index: 2; width: eval('_width+10'); color: yellow;
opacity: 0.7;}
(see
http://svn.openstreetmap.org/applications/editors/potlatch2/net/systemeD/halcyon/styleparser/StyleChooser.as
and, in particular, tags['_width']=sl.maxwidth; r.runEvals(tags);)
As ever, very open to better ways of doing it. :)
The question is not as simple as it seems.
You need to get a width of stroke on another sublayer. For now,
proposed eval() syntax lets you get only properties from current
sublayer.
What I propose is to allow prop() have an optional second argument -
name of sublayer to get properties from. So I'd propose:
way[bridge=yes]::bridge-over {
color: #000080;
opacity: 0.5;
z-index: 0.01;
width: eval(num(prop("width", "default"))+4);
}
Any better ideas?
_______________________________________________
Mapcss mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/mapcss