@@ -7,6 +7,8 @@ Sequence = require('lib/sequence')
77Handlers = require (" lib/way_handlers" )
88TrafficSignal = require (" lib/traffic_signal" )
99find_access_tag = require (" lib/access" ).find_access_tag
10+ resolve_access = require (" lib/access" ).resolve_access
11+ Tags = require (' lib/tags' )
1012limit = require (" lib/maxspeed" ).limit
1113Measure = require (" lib/measure" )
1214
@@ -299,9 +301,16 @@ function handle_bicycle_tags(profile,way,result,data)
299301 return false
300302 end
301303
302- -- access
304+ -- access (supports directional tags like vehicle:forward=agricultural)
303305 data .access = find_access_tag (way , profile .access_tags_hierarchy )
304- if data .access and profile .access_tag_blacklist [data .access ] then
306+ data .forward_access , data .backward_access =
307+ Tags .get_forward_backward_by_set (way , data , profile .access_tags_hierarchy )
308+ data .forward_access = resolve_access (data .forward_access , profile )
309+ data .backward_access = resolve_access (data .backward_access , profile )
310+ if (data .access and profile .access_tag_blacklist [data .access ])
311+ or (data .forward_access and data .backward_access
312+ and profile .access_tag_blacklist [data .forward_access ]
313+ and profile .access_tag_blacklist [data .backward_access ]) then
305314 return false
306315 end
307316
@@ -349,6 +358,17 @@ function handle_bicycle_tags(profile,way,result,data)
349358 end
350359
351360 safety_handler (profile ,way ,result ,data )
361+
362+ -- Apply per-direction access blacklisting for directional tags
363+ -- (e.g. vehicle:forward=agricultural blocks only the forward direction)
364+ if data .forward_access and profile .access_tag_blacklist [data .forward_access ] then
365+ result .forward_mode = mode .inaccessible
366+ result .forward_speed = 0
367+ end
368+ if data .backward_access and profile .access_tag_blacklist [data .backward_access ] then
369+ result .backward_mode = mode .inaccessible
370+ result .backward_speed = 0
371+ end
352372end
353373
354374-- Block ways where the cycleway is mapped as a separate parallel way.
0 commit comments