[Mapcss] Layering model enhancements

Paul Hartmann phaaurlt at googlemail.com
Wed Apr 20 17:37:58 BST 2011


Komяpa wrote:
> Hi everyone,
> 
> Thinking of casings/polygons problem.
> 
> Imagine a linear road that finishes as asphalted surface inside a
> forest. Let the road be highway=service; the asphalted surface -
> highway=service area=yes, and forest - landuse=forest.
> 
> Currently, we draw:
>  - forest as green;
>  - highway=service area=yes polygon as white
>  - casings for both highways. The casing for linear service overlaps
> with white area's polygon.
>  - linear fill for highway.

I don't understand completely. I assume the casing for the linear way is grey and it is filled white. What do you mean by casing of the area? Is this a simple line style that uses the same way as the area? What is it's colour, is it grey?

> That leads to rendering artifacts. We can omit them by rendering first
> casings, then polygons - but that leads to roads being casingsless in
> forests.
> 
> What I propose:
>  - add background-*, same as fill-*, rendered before casings;
>  - render fill-* in the same loop with lines.
> 
> Any objections / better ideas?

Can't this be solved with explicit z-index?

JOSM assigns as default z-index:

area         -1000
line casing   -100 
line pattern    -1
line             0
line text        2
node          1000
untagged node 1000+epsilon

offset for selected objects: +700
offset for members of a selected relation: +600

All objects are in one rendering loop, because:
 * Nodes are much more common than ways, so performance wise, there is no difference sorting only /nodes/ compared to /all objects/ by z-index.
 * Sometimes it is useful to render node styles below line styles, e.g. if you like to mark the modified objects with a "halo".

Now, you probably want to draw the asphalted area on top of the way casing, so you could raise the area to a z-index of -50.

Regards, Paul



More information about the Mapcss mailing list