[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