osmandapp / OsmAnd

OsmAnd
https://osmand.net
Other
4.67k stars 1.02k forks source link

cycleway:both = lane incorrect render in touring view #20721

Closed Velomeloman closed 1 month ago

Velomeloman commented 2 months ago

Description

In Touring view tag cycleway:both = lane renders with extra dash line in the center of highway.

Steps to reproduce

  1. Bicycle profile
  2. Map style - Touring view
  3. Search 55.68597° N, 37.59358° E

Actual result

Винокурова st tagged with cycleway:both = lane has extra dash line in the center of highway. Большая Черемушкинской st tagged with cycleway=lane cycleway:both=yes renders correctly

Expected result

cycleway:both = lane renders similarly as cycleway=lane cycleway:both=yes

Also cycleway:left and cycleway:right

Your Environment (required)

OsmAnd~ 4.9.0#3096m, released: 2024-08-29 
yuriiurshuliak commented 2 months ago

The bug has been reproduced. To reproduce this issue, change the map style to "Touring view," select the cycling profile, and enable cycle routes. Then, navigate to these coordinates: 55.68597, 37.59358.

As a result, you'll notice an additional dashed line displayed in the center of the road. If you switch the map style back to the default OsmAnd, this line will no longer be visible.

OsmAnd~ 4.9.0#3104m, released: 2024-09-02

Velomeloman commented 1 month ago

I tryed to find how fix it in touring-view.render.xml, but all described cycleway tag combinations listed in one condition. I have no idea what to do. Also I can't find conditions for cycleway:left and cycleway:right tags. @sonora, can you help with this issue?

sonora commented 1 month ago

Probably it's this block, which may need (partially or entirely, not sure) disabling for the v2 engine:

    <!-- cycleway=* accentuated in bicycle mode -->
    <switch>
        <case tag="cycleway" value="lane"/>
        <case tag="cycleway" value="track"/>
        <case tag="cycleway" value="opposite_lane"/>
        <case tag="cycleway" value="both"/>
        <case tag="cycleway:both" value="lane"/>
        <case tag="cycleway:both" value="track"/>
        <apply_if baseAppMode="bicycle" minzoom="14" color="$cyclewayColor" strokeWidth="2" pathEffect="8_4"/>
    </switch>

But I am not sure how to best resolve conflicts between the v1 and the v2 engine, would appreciate @xmd5a2 's advice and action on this...

PS: Side finding: Perhaps that code block is also missing the case cycleway:both=yes, because the (orange) crossroad in the screenshots above (tagged as such) is not affected? (Meaning in v1 engine the cycleways are probably not rendered, a secondary bug?) And yes, perhaps also support for cycleway:left/right may be missing, the code block was once copied from the default renderer to provide basic cycleway support, but probably missed any development since then - good chance to fix now.)

Velomeloman commented 1 month ago

cycleway:left/right supported, but renders also incorrect

sonora commented 1 month ago

Ok, thanks. Like I said, and I am not quite sure, I believe that the 'center line' is the workaround for the old v1 render engine (think it does not support the proper positioning of the line), and it may require to be explicitly supressed when the user uses the v2 engine, to prevent both appearances to be shown together...

Velomeloman commented 1 month ago

I just commented out this whole block and everything works fine. Even v1. I can make a pool request later.

sonora commented 1 month ago

Ah, I guess we just overlapped. Yes, I think I have meanwhile fixed it, please test.

Discovered one other small glitch, should probably use "$cyclewayColor" for paths with bicycle=designated in baseAppMode="bicycle". Amended here: https://github.com/osmandapp/OsmAnd-resources/commit/2162b009a145daf9b07bbb104bbb83436ccd46af

@xmd5a2 I have a feeling, https://github.com/osmandapp/OsmAnd-resources/commit/2162b009a145daf9b07bbb104bbb83436ccd46af does not what is is intended for, but I currently cannot se why. Would you have any idea? EDIT: FIXED - Needed one more place to add it - thank you.