diff --git a/railway-gauge.json b/railway-gauge.json index e20de61f..4771b27c 100644 --- a/railway-gauge.json +++ b/railway-gauge.json @@ -8,7 +8,10 @@ "14": "way[railway~'^(disused|construction|funicular|light_rail|miniature|monorail|narrow_gauge|preserved|rail|subway|tram)$'];" }, "feature": { - "pre": "{% set gauges = tags.gauge|split(';') %}", + "pre": [ + "{% set gauges = tags.gauge|split(';')|sort|reverse %}", + "{% set width = max(3, 3 / map.metersPerPixel) %}" + ], "title": "{% if tags.ref %}{{ localizedTag(tags, 'ref') }} - {% endif %}{{ localizedTag(tags, 'name')|default(localizedTag(tags, 'operator'))|default(trans('unnamed')) }}", "description": "{{ tags.gauge|default(trans('unknown'))|enumerate }}", "body": [ @@ -21,37 +24,67 @@ ], "markerSymbol": null, "listMarkerSymbol": "line", - "styles": "{% if gauges|length < 2 %}default{% else %}{% for i, v in gauges %}{% if i != 0 %},{% endif %}gauge{{ i }}{% endfor %}{% endif %}", + "styles": "{% if gauges|length < 2 %}default{% else %}{% for i, v in gauges %}{% if i != 0 %},{% endif %}gauge{{ i }}{% endfor %}{% endif %}{% if gauges|length > 0 and map.zoom >= 18 %},rail{% for i, v in gauges %},rail{{ i }}{% endfor %}{% endif %}", "style": { - "width": "3", + "width": "{{ width }}", + "pane": "casing", "color": "{% if tags.gauge %}{% if not tags.gauge|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], tags.gauge / 2000) }}{% endif %}{% else %}#404040{% endif %}" }, + "style:rail": { + "width": "1", + "color": "#ffffff", + "offset": "{{ gauges[0] / -2000 }}m" + }, "style:gauge0": { - "width": "3", + "width": "{{ width }}", + "pane": "casing", "lineCap": "butt", "color": "{% if not gauges[0]|matches('^[0-9]+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[0] / 2000) }}{% endif %}", "dashArray": "5,{{ (gauges|length - 1) * 5 }}" }, + "style:rail0": { + "width": "1", + "color": "#ffffff", + "offset": "{{ gauges[0] / 2000 }}m" + }, "style:gauge1": { - "width": "3", + "width": "{{ width }}", + "pane": "casing", "lineCap": "butt", "color": "{% if not gauges[1]|matches('^[0-9]+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[1] / 2000) }}{% endif %}", "dashArray": "5,{{ (gauges|length - 1) * 5 }}", "dashOffset": "5" }, + "style:rail1": { + "width": "1", + "color": "#ffffff", + "offset": "{{ gauges[0] / -2000 + gauges[1] / 1000 }}m" + }, "style:gauge2": { - "width": "3", + "width": "{{ width }}", + "pane": "casing", "lineCap": "butt", "color": "{% if not gauges[2]|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[2] / 2000) }}{% endif %}", "dashArray": "5,{{ (gauges|length - 1) * 5 }}", "dashOffset": "10" }, + "style:rail2": { + "width": "1", + "color": "#ffffff", + "offset": "{{ gauges[0] / -2000 + gauges[2] / 1000 }}m" + }, "style:gauge3": { - "width": "3", + "width": "{{ width }}", + "pane": "casing", "lineCap": "butt", "color": "{% if not gauges[3]|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[3] / 2000) }}{% endif %}", "dashArray": "5,{{ (gauges|length - 1) * 5 }}", "dashOffset": "15" + }, + "style:rail3": { + "width": "1", + "color": "#ffffff", + "offset": "{{ gauges[0] / -2000 + gauges[3] / 1000 }}m" } }, "info": [