[OSM-talk] rendering different oneway arrows icons
80n
80n80n at gmail.com
Thu Aug 21 09:26:30 BST 2008
On Wed, Aug 20, 2008 at 10:31 PM, Knut Arne Bjørndal
<bob+osm at cakebox.net<bob%2Bosm at cakebox.net>
> wrote:
> Stephan Schildberg <schildberg at scoid.de> writes:
> > The rendererd arrow icons for oneways have a different appearance in
> > Osmarender.
> >
> >
> > its icon has more contrast
> > oneway = -1
> >
> > those icons are pale and longer
> > oneway = 1
> > oneway = true
> > oneway = yes
>
> I believe this is simply a bug, see
> http://trac.openstreetmap.org/ticket/991
>
> 80n: Or was there some reason the new oneway arrow you talked about at the
> first SOTM wasn't done for both backwards and forwards?
>
The one-way icon is built up of about 14 separate strokes that are repeated
using dash-array. Creating an inverse pattern should be a simple matter
although not completely trivial.
I don't like the idea of having two separate definitions of the same object
and so I wonder if it would be better to introduce a method of painting in
the reverse direction along a way. There would then only need to one
definition of the strokes required for a one-way arrow. Also there might be
some other uses for this capability in the future.
I'm thinking of something like a direction=-1 attribute on the <line> tag:
<rule e="way" k="highway" v="*">
<rule e="way" k="oneway" v="1|yes|true">
<line class="oneway-casing oneway-casing-1" smart-linecap='no' />
<line class="oneway-casing oneway-casing-2" smart-linecap='no' />
...
</rule>
<rule e="way" k="oneway" v="-1">
<line direction='-1' class="oneway-casing oneway-casing-1"
smart-linecap='no' />
<line direction='-1' class="oneway-casing oneway-casing-2"
smart-linecap='no' />
...
</rule>
</rule>
This would need a relatively simple patch to the drawWay template in
Osmarender. Something like this (untested):
<xsl:variable name='pathId'>
<xsl:when test="$instruction/@direction='-1'">
<xsl:value-of select="concat('way_reverse_',$way/@id)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat('way_normal_',$way/@id)"/>
</xsl:otherwise>
</xsl:variable>
<xsl:choose>
<xsl:when test="$instruction/@smart-linecap='no'">
<xsl:call-template name='drawPath'>
<xsl:with-param name='pathId' select="$pathId"/>
<xsl:with-param name='instruction' select='$instruction'/>
<xsl:with-param name="extraClasses" select='$extraClasses'/>
<xsl:with-param name="extraStyles" select='$extraStyles'/>
</xsl:call-template>
</xsl:when>
I don't know what it would take to implement this in or/p, but I wouldn't
have thought it would be too difficult.
What do you think?
80n
>
> If it was unintentional, do you think you could change it? I don't really
> understand the rather fancy css/svg you've used there.
>
> --
> Knut Arne Bjørndal
> aka Bob Kåre
> bob+osm at cakebox.net <bob%2Bosm at cakebox.net>
> bobkare at irc
>
> _______________________________________________
> talk mailing list
> talk at openstreetmap.org
> http://lists.openstreetmap.org/listinfo/talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/talk/attachments/20080821/b90ec210/attachment.html>
More information about the talk
mailing list