A repository for testing purposes.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

875 lines
46 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. {
  2. "type": "overpass",
  3. "name": {
  4. "en": "Lanes"
  5. },
  6. "query": {
  7. "17": [
  8. "(",
  9. "way[lanes];",
  10. "way['lanes:forward'];",
  11. "way['lanes:backward'];",
  12. "way['parking:lane:left'];",
  13. "way['parking:lane:right'];",
  14. "way['parking:lane:both'];",
  15. ")"
  16. ]
  17. },
  18. "feature": {
  19. "pre": [
  20. "{% set oneway = tags.oneway in ['yes','1'] %}",
  21. "{% set parking_left_type = attribute(tags, 'parking:lane:left')|default(attribute(tags, 'parking:lane:both')) %}",
  22. "{% set parking_left = parking_left_type ? const.parking[parking_left_type]|default(const.parking.other) : const.parking.no %}",
  23. "{% set parking_right_type = attribute(tags, 'parking:lane:right')|default(attribute(tags, 'parking:lane:both')) %}",
  24. "{% set parking_right = parking_right_type ? const.parking[parking_right_type]|default(const.parking.other) : const.parking.no %}",
  25. "{% set cyclelane_left = attribute(tags, 'cycleway:left') == 'lane' ? 2 : ('opposite_lane' in tags.cycleway|split(';') ? 2 : (('lane' in tags.cycleway|split(';')) and not oneway ? 2 : 0)) %}",
  26. "{% set cyclelane_right = attribute(tags, 'cycleway:right') == 'lane' ? 2 : ('lane' in tags.cycleway|split(';') ? 2 : 0) %}",
  27. "{% set cycletrack_left = attribute(tags, 'cycleway:left') == 'track' ? 2 : ('opposite_track' in tags.cycleway|split(';') ? 2 : (('track' in tags.cycleway|split(';')) and not oneway ? 2 : 0)) %}",
  28. "{% set cycletrack_right = attribute(tags, 'cycleway:right') == 'track' ? 2 : ('track' in tags.cycleway|split(';') ? 2 : 0) %}",
  29. "{% set sidewalk_left = tags.sidewalk in ['both', 'left'] ? 2 : 0 %}",
  30. "{% set sidewalk_right = tags.sidewalk in ['both', 'right'] ? 2 : 0 %}",
  31. "{% set lanes = tags.lanes|default(attribute(tags, 'lanes:forward')|default(0) + attribute(tags, 'lanes:backward')|default(0))|default(tags.oneway ? 1 : 2) %}",
  32. "{% set lanes_width = lanes * 3 %}",
  33. "{% set forward_lanes = attribute(tags, 'lanes:forward')|default(oneway ? lanes : lanes // 2) %}",
  34. "{% set backward_lanes = attribute(tags, 'lanes:backward')|default(oneway ? 0 : lanes // 2) %}",
  35. "{% if attribute(tags, 'turn:lanes:backward') %}",
  36. " {% set turn_lanes_backward = attribute(tags, 'turn:lanes:backward')|split('|') %}",
  37. "{% else %}",
  38. " {% set turn_lanes_backward = ['through','through','through','through','through','through','through','through','through','through','through','through']|slice(0, backward_lanes) %}",
  39. "{% endif %}",
  40. "{% if attribute(tags, 'turn:lanes:forward') or attribute(tags, 'turn:lanes') %}",
  41. " {% set turn_lanes_forward = attribute(tags, 'turn:lanes:forward')|default(attribute(tags, 'turn:lanes'))|split('|') %}",
  42. "{% else %}",
  43. " {% set turn_lanes_forward = ['through','through','through','through','through','through','through','through','through','through','through','through']|slice(0, forward_lanes) %}",
  44. "{% endif %}",
  45. "{% set turn_lanes = turn_lanes_backward|merge(turn_lanes_forward) %}"
  46. ],
  47. "description": "{{ keyTrans('lanes') }}: {% if tags.lanes %}{{ tags.lanes }}{% else %}{{ lanes }}?{% endif %} {% if attribute(tags, 'lanes:forward') or attribute(tags, 'lanes:backward') %}(↑{{ forward_lanes }} ↓{{ backward_lanes }}){% endif %}",
  48. "body": [
  49. "{{ tagTrans('railway', tags.railway) }}<br/>",
  50. "{% if tags.operator %}{{ keyTrans('operator') }}: {{ localizedTag(tags, 'operator') }}<br>{% endif %}",
  51. "{% if tags.usage %}{{ keyTrans('usage') }}: {{ tagTrans('usage', tags.usage)|default(trans('unknown')) }}<br/>{% endif %}",
  52. "{% if tags.service %}{{ keyTrans('service') }}: {{ tagTrans('service', tags.service ) }}<br/>{% endif %}",
  53. "{{ keyTrans('gauge') }}: {{ tags.gauge|default(trans('unknown'))|enumerate }}<br/>",
  54. "{% if tags.electrified == 'no' %}{{ keyTrans('electrified') }}: {{ tagTrans('electrified', 'no') }}{% elseif tags.electrified %}{{ keyTrans('electrified') }}: {{ tagTrans('electrified', tags.electrified) }}, {{ keyTrans('voltage') }}: {{ tags.voltage|default(trans('unknown')) }}, {{ keyTrans('frequency') }}: {{ tags.frequency|default(trans('unknown')) }}<br/>{% endif %}"
  55. ],
  56. "markerSymbol": null,
  57. "listMarkerSymbol": "line",
  58. "styles": [
  59. "{% if sidewalk_left %}sidewalk_left,{% endif %}",
  60. "{% if cycletrack_left %}cycletrack_left,{% endif %}",
  61. "{% if parking_left.width %}parking_left,",
  62. " {% if parking_left.dashDistance %}parking_left_dash,",
  63. " {% if parking_left_type == 'diagonal' %}parking_left_dash_diag,",
  64. "{% endif %}{% endif %}{% endif %}",
  65. "{% if cyclelane_left %}cyclelane_left,{% endif %}",
  66. "{% if lanes == 1 %}lane1,sign1,{% else %}",
  67. " {% for i in 1..lanes - 1 %}lane{{ i }},mark{{ i }},sign{{ i }},{% endfor %}",
  68. " lane{{ lanes }},sign{{ lanes }}",
  69. "{% endif %}",
  70. "{% if cyclelane_right %},cyclelane_right{% endif %}",
  71. "{% if parking_right.width %},parking_right",
  72. " {% if parking_right.dashDistance %},parking_right_dash",
  73. " {% if parking_right_type == 'diagonal' %},parking_right_dash_diag",
  74. "{% endif %}{% endif %}{% endif %}",
  75. "{% if cycletrack_right %},cycletrack_right{% endif %}",
  76. "{% if sidewalk_right %},sidewalk_right{% endif %}"
  77. ],
  78. "style": {
  79. "width": "{{ width }}",
  80. "pane": "casing",
  81. "color": "{% if tags.gauge %}{% if not tags.gauge|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], tags.gauge / 2000) }}{% endif %}{% else %}#404040{% endif %}"
  82. },
  83. "style:sidewalk_left": {
  84. "width": "2m",
  85. "color": "#4f4fbf",
  86. "offset": "{{ lanes_width / -2 - cyclelane_left - parking_left.width - cycletrack_left - 1 }}m",
  87. "pane": "casing"
  88. },
  89. "style:parking_left": {
  90. "width": "{{ parking_left.width }}m",
  91. "color": "{{ parking_left.color }}",
  92. "offset": "{{ lanes_width / -2 - cyclelane_left - parking_left.width / 2 }}m",
  93. "pane": "casing"
  94. },
  95. "style:parking_left_dash": {
  96. "width": "{{ parking_left.width / (parking_left_type == 'diagonal' ? 2 : 1) }}m",
  97. "color": "{{ parking_left.dashColor }}",
  98. "offset": "{{ lanes_width / -2 - cyclelane_left - parking_left.width / 2 - (parking_left_type == 'diagonal' ? parking_left.width / 4 : 0) }}m",
  99. "lineCap": "butt",
  100. "dashArray": "1,{{ parking_left.dashDistance / map.metersPerPixel }}"
  101. },
  102. "style:parking_left_dash_diag": {
  103. "width": "{{ parking_left.width / 2 }}m",
  104. "color": "{{ parking_left.dashColor }}",
  105. "offset": "{{ lanes_width / -2 - cyclelane_left - parking_left.width / 4 }}m",
  106. "lineCap": "butt",
  107. "dashArray": "1,{{ parking_left.dashDistance / map.metersPerPixel }}",
  108. "dashOffset": "{{ 0.5 / map.metersPerPixel }}"
  109. },
  110. "style:cyclelane_left": {
  111. "width": "2m",
  112. "color": "#af3f3f",
  113. "offset": "{{ lanes_width / -2 - 1 }}m",
  114. "pane": "casing"
  115. },
  116. "style:cyclelane_right": {
  117. "width": "2m",
  118. "color": "#af3f3f",
  119. "offset": "{{ lanes_width / 2 + 1 }}m",
  120. "pane": "casing"
  121. },
  122. "style:cycletrack_left": {
  123. "width": "2m",
  124. "color": "#bf5f3f",
  125. "offset": "{{ lanes_width / -2 - cyclelane_left - parking_left.width - 1 }}m",
  126. "pane": "casing"
  127. },
  128. "style:cycletrack_right": {
  129. "width": "2m",
  130. "color": "#bf5f3f",
  131. "offset": "{{ lanes_width / 2 + cyclelane_right + parking_right.width + 1 }}m",
  132. "pane": "casing"
  133. },
  134. "style:parking_right": {
  135. "width": "{{ parking_left.width }}m",
  136. "color": "{{ parking_left.color }}",
  137. "offset": "{{ lanes_width / 2 + cyclelane_right + parking_right.width / 2 }}m",
  138. "pane": "casing"
  139. },
  140. "style:parking_right_dash": {
  141. "width": "{{ parking_right.width / (parking_right_type == 'diagonal' ? 2 : 1) }}m",
  142. "color": "{{ parking_right.dashColor }}",
  143. "offset": "{{ lanes_width / 2 + cyclelane_right + parking_right.width / 2 + (parking_right_type == 'diagonal' ? parking_right.width / 4 : 0) }}m",
  144. "lineCap": "butt",
  145. "dashArray": "1,{{ parking_right.dashDistance / map.metersPerPixel }}"
  146. },
  147. "style:parking_right_dash_diag": {
  148. "width": "{{ parking_right.width / 2 }}m",
  149. "color": "{{ parking_right.dashColor }}",
  150. "offset": "{{ lanes_width / 2 + cyclelane_right + parking_right.width / 4 }}m",
  151. "lineCap": "butt",
  152. "dashArray": "1,{{ parking_right.dashDistance / map.metersPerPixel }}",
  153. "dashOffset": "{{ 0.5 / map.metersPerPixel }}"
  154. },
  155. "style:sidewalk_right": {
  156. "width": "2m",
  157. "color": "#4f4fbf",
  158. "offset": "{{ lanes_width / 2 + cyclelane_right + parking_right.width + cycletrack_right + 1 }}m",
  159. "pane": "casing"
  160. },
  161. "style:lane1": {
  162. "width": "3.1m",
  163. "offset": "{{ lanes_width / -2 + 1.5 }}m",
  164. "color": "grey",
  165. "pane": "casing"
  166. },
  167. "style:lane2": {
  168. "width": "3.1m",
  169. "offset": "{{ lanes_width / -2 + 4.5 }}m",
  170. "color": "grey",
  171. "pane": "casing"
  172. },
  173. "style:lane3": {
  174. "width": "3.1m",
  175. "offset": "{{ lanes_width / -2 + 7.5 }}m",
  176. "color": "grey",
  177. "pane": "casing"
  178. },
  179. "style:lane4": {
  180. "width": "3.1m",
  181. "offset": "{{ lanes_width / -2 + 10.5 }}m",
  182. "color": "grey",
  183. "pane": "casing"
  184. },
  185. "style:lane5": {
  186. "width": "3.1m",
  187. "offset": "{{ lanes_width / -2 + 13.5 }}m",
  188. "color": "grey",
  189. "pane": "casing"
  190. },
  191. "style:lane6": {
  192. "width": "3.1m",
  193. "offset": "{{ lanes_width / -2 + 16.5 }}m",
  194. "color": "grey",
  195. "pane": "casing"
  196. },
  197. "style:lane7": {
  198. "width": "3.1m",
  199. "offset": "{{ lanes_width / -2 + 19.5 }}m",
  200. "color": "grey",
  201. "pane": "casing"
  202. },
  203. "style:lane8": {
  204. "width": "3.1m",
  205. "offset": "{{ lanes_width / -2 + 22.5 }}m",
  206. "color": "grey",
  207. "pane": "casing"
  208. },
  209. "style:lane9": {
  210. "width": "3.1m",
  211. "offset": "{{ lanes_width / -2 + 25.5 }}m",
  212. "color": "grey",
  213. "pane": "casing"
  214. },
  215. "style:lane10": {
  216. "width": "3.1m",
  217. "offset": "{{ lanes_width / -2 + 28.5 }}m",
  218. "color": "grey",
  219. "pane": "casing"
  220. },
  221. "style:lane11": {
  222. "width": "3.1m",
  223. "offset": "{{ lanes_width / -2 + 31.5 }}m",
  224. "color": "grey",
  225. "pane": "casing"
  226. },
  227. "style:lane12": {
  228. "width": "3.1m",
  229. "offset": "{{ lanes_width / -2 + 34.5 }}m",
  230. "color": "grey",
  231. "pane": "casing"
  232. },
  233. "style:mark1": {
  234. "width": "1",
  235. "offset": "{{ lanes_width / -2 + 3 }}m",
  236. "dashArray": "{% if lanes - forward_lanes != 1 and backward_lanes != 1 %}2,8{% else %}5,5{% endif %}",
  237. "color": "white"
  238. },
  239. "style:mark2": {
  240. "width": "1",
  241. "offset": "{{ lanes_width / -2 + 6 }}m",
  242. "dashArray": "{% if lanes - forward_lanes != 2 and backward_lanes != 2 %}2,8{% else %}5,5{% endif %}",
  243. "color": "white"
  244. },
  245. "style:mark3": {
  246. "width": "1",
  247. "offset": "{{ lanes_width / -2 + 9 }}m",
  248. "dashArray": "{% if lanes - forward_lanes != 3 and backward_lanes != 3 %}2,8{% else %}5,5{% endif %}",
  249. "color": "white"
  250. },
  251. "style:mark4": {
  252. "width": "1",
  253. "offset": "{{ lanes_width / -2 + 12 }}m",
  254. "dashArray": "{% if lanes - forward_lanes != 4 and backward_lanes != 4 %}2,8{% else %}5,5{% endif %}",
  255. "color": "white"
  256. },
  257. "style:mark5": {
  258. "width": "1",
  259. "offset": "{{ lanes_width / -2 + 15 }}m",
  260. "dashArray": "{% if lanes - forward_lanes != 5 and backward_lanes != 5 %}2,8{% else %}5,5{% endif %}",
  261. "color": "white"
  262. },
  263. "style:mark6": {
  264. "width": "1",
  265. "offset": "{{ lanes_width / -2 + 18 }}m",
  266. "dashArray": "{% if lanes - forward_lanes != 6 and backward_lanes != 6 %}2,8{% else %}5,5{% endif %}",
  267. "color": "white"
  268. },
  269. "style:mark7": {
  270. "width": "1",
  271. "offset": "{{ lanes_width / -2 + 18 }}m",
  272. "dashArray": "{% if lanes - forward_lanes != 7 and backward_lanes != 7 %}2,8{% else %}5,5{% endif %}",
  273. "color": "white"
  274. },
  275. "style:mark8": {
  276. "width": "1",
  277. "offset": "{{ lanes_width / -2 + 18 }}m",
  278. "dashArray": "{% if lanes - forward_lanes != 8 and backward_lanes != 8 %}2,8{% else %}5,5{% endif %}",
  279. "color": "white"
  280. },
  281. "style:mark9": {
  282. "width": "1",
  283. "offset": "{{ lanes_width / -2 + 18 }}m",
  284. "dashArray": "{% if lanes - forward_lanes != 9 and backward_lanes != 9 %}2,8{% else %}5,5{% endif %}",
  285. "color": "white"
  286. },
  287. "style:mark10": {
  288. "width": "1",
  289. "offset": "{{ lanes_width / -2 + 18 }}m",
  290. "dashArray": "{% if lanes - forward_lanes != 10 and backward_lanes != 10 %}2,8{% else %}5,5{% endif %}",
  291. "color": "white"
  292. },
  293. "style:mark11": {
  294. "width": "1",
  295. "offset": "{{ lanes_width / -2 + 18 }}m",
  296. "dashArray": "{% if lanes - forward_lanes != 11 and backward_lanes != 11 %}2,8{% else %}5,5{% endif %}",
  297. "color": "white"
  298. },
  299. "style:sign1": {
  300. "_": "{% set lane_forward = backward_lanes < 1 %}{% set lane_turn = turn_lanes[1 - 1]|split(';') %}",
  301. "width": "0",
  302. "pattern0": "dash",
  303. "pattern0-repeat": "30m",
  304. "pattern0-pixelSize": "3m",
  305. "pattern0-offset": "15.0m",
  306. "pattern0-path-color": "white",
  307. "pattern0-path-width": "0.3m",
  308. "pattern0-lineOffset": "{{ lanes_width / -2 + 1 * 3 - 1.5 }}m",
  309. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  310. "patternThrough-repeat": "30m",
  311. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  312. "patternThrough-polygon": "true",
  313. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  314. "patternThrough-pixelSize": "1.2m",
  315. "patternThrough-path-color": "white",
  316. "patternThrough-path-width": "0",
  317. "patternThrough-path-fillOpacity": "1",
  318. "patternThrough-lineOffset": "{{ lanes_width / -2 + 1 * 3 - 1.5 }}m",
  319. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  320. "patternLeft-repeat": "30m",
  321. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  322. "patternLeft-polygon": "true",
  323. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  324. "patternLeft-pixelSize": "1.2m",
  325. "patternLeft-path-color": "white",
  326. "patternLeft-path-width": "0",
  327. "patternLeft-path-fillOpacity": "1",
  328. "patternLeft-lineOffset": "{{ lanes_width / -2 + 1 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  329. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  330. "patternRight-repeat": "30m",
  331. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  332. "patternRight-polygon": "true",
  333. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  334. "patternRight-pixelSize": "1.2m",
  335. "patternRight-path-color": "white",
  336. "patternRight-path-width": "0",
  337. "patternRight-path-fillOpacity": "1",
  338. "patternRight-lineOffset": "{{ lanes_width / -2 + 1 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  339. },
  340. "style:sign2": {
  341. "_": "{% set lane_forward = backward_lanes < 2 %}{% set lane_turn = turn_lanes[2 - 1]|split(';') %}",
  342. "width": "0",
  343. "pattern0": "dash",
  344. "pattern0-repeat": "30m",
  345. "pattern0-pixelSize": "3m",
  346. "pattern0-offset": "15.0m",
  347. "pattern0-path-color": "white",
  348. "pattern0-path-width": "0.3m",
  349. "pattern0-lineOffset": "{{ lanes_width / -2 + 2 * 3 - 1.5 }}m",
  350. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  351. "patternThrough-repeat": "30m",
  352. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  353. "patternThrough-polygon": "true",
  354. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  355. "patternThrough-pixelSize": "1.2m",
  356. "patternThrough-path-color": "white",
  357. "patternThrough-path-width": "0",
  358. "patternThrough-path-fillOpacity": "1",
  359. "patternThrough-lineOffset": "{{ lanes_width / -2 + 2 * 3 - 1.5 }}m",
  360. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  361. "patternLeft-repeat": "30m",
  362. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  363. "patternLeft-polygon": "true",
  364. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  365. "patternLeft-pixelSize": "1.2m",
  366. "patternLeft-path-color": "white",
  367. "patternLeft-path-width": "0",
  368. "patternLeft-path-fillOpacity": "1",
  369. "patternLeft-lineOffset": "{{ lanes_width / -2 + 2 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  370. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  371. "patternRight-repeat": "30m",
  372. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  373. "patternRight-polygon": "true",
  374. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  375. "patternRight-pixelSize": "1.2m",
  376. "patternRight-path-color": "white",
  377. "patternRight-path-width": "0",
  378. "patternRight-path-fillOpacity": "1",
  379. "patternRight-lineOffset": "{{ lanes_width / -2 + 2 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  380. },
  381. "style:sign3": {
  382. "_": "{% set lane_forward = backward_lanes < 3 %}{% set lane_turn = turn_lanes[3 - 1]|split(';') %}",
  383. "width": "0",
  384. "pattern0": "dash",
  385. "pattern0-repeat": "30m",
  386. "pattern0-pixelSize": "3m",
  387. "pattern0-offset": "15.0m",
  388. "pattern0-path-color": "white",
  389. "pattern0-path-width": "0.3m",
  390. "pattern0-lineOffset": "{{ lanes_width / -2 + 3 * 3 - 1.5 }}m",
  391. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  392. "patternThrough-repeat": "30m",
  393. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  394. "patternThrough-polygon": "true",
  395. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  396. "patternThrough-pixelSize": "1.2m",
  397. "patternThrough-path-color": "white",
  398. "patternThrough-path-width": "0",
  399. "patternThrough-path-fillOpacity": "1",
  400. "patternThrough-lineOffset": "{{ lanes_width / -2 + 3 * 3 - 1.5 }}m",
  401. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  402. "patternLeft-repeat": "30m",
  403. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  404. "patternLeft-polygon": "true",
  405. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  406. "patternLeft-pixelSize": "1.2m",
  407. "patternLeft-path-color": "white",
  408. "patternLeft-path-width": "0",
  409. "patternLeft-path-fillOpacity": "1",
  410. "patternLeft-lineOffset": "{{ lanes_width / -2 + 3 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  411. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  412. "patternRight-repeat": "30m",
  413. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  414. "patternRight-polygon": "true",
  415. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  416. "patternRight-pixelSize": "1.2m",
  417. "patternRight-path-color": "white",
  418. "patternRight-path-width": "0",
  419. "patternRight-path-fillOpacity": "1",
  420. "patternRight-lineOffset": "{{ lanes_width / -2 + 3 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  421. },
  422. "style:sign4": {
  423. "_": "{% set lane_forward = backward_lanes < 4 %}{% set lane_turn = turn_lanes[4 - 1]|split(';') %}",
  424. "width": "0",
  425. "pattern0": "dash",
  426. "pattern0-repeat": "30m",
  427. "pattern0-pixelSize": "3m",
  428. "pattern0-offset": "15.0m",
  429. "pattern0-path-color": "white",
  430. "pattern0-path-width": "0.3m",
  431. "pattern0-lineOffset": "{{ lanes_width / -2 + 4 * 3 - 1.5 }}m",
  432. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  433. "patternThrough-repeat": "30m",
  434. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  435. "patternThrough-polygon": "true",
  436. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  437. "patternThrough-pixelSize": "1.2m",
  438. "patternThrough-path-color": "white",
  439. "patternThrough-path-width": "0",
  440. "patternThrough-path-fillOpacity": "1",
  441. "patternThrough-lineOffset": "{{ lanes_width / -2 + 4 * 3 - 1.5 }}m",
  442. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  443. "patternLeft-repeat": "30m",
  444. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  445. "patternLeft-polygon": "true",
  446. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  447. "patternLeft-pixelSize": "1.2m",
  448. "patternLeft-path-color": "white",
  449. "patternLeft-path-width": "0",
  450. "patternLeft-path-fillOpacity": "1",
  451. "patternLeft-lineOffset": "{{ lanes_width / -2 + 4 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  452. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  453. "patternRight-repeat": "30m",
  454. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  455. "patternRight-polygon": "true",
  456. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  457. "patternRight-pixelSize": "1.2m",
  458. "patternRight-path-color": "white",
  459. "patternRight-path-width": "0",
  460. "patternRight-path-fillOpacity": "1",
  461. "patternRight-lineOffset": "{{ lanes_width / -2 + 4 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  462. },
  463. "style:sign5": {
  464. "_": "{% set lane_forward = backward_lanes < 5 %}{% set lane_turn = turn_lanes[5 - 1]|split(';') %}",
  465. "width": "0",
  466. "pattern0": "dash",
  467. "pattern0-repeat": "30m",
  468. "pattern0-pixelSize": "3m",
  469. "pattern0-offset": "15.0m",
  470. "pattern0-path-color": "white",
  471. "pattern0-path-width": "0.3m",
  472. "pattern0-lineOffset": "{{ lanes_width / -2 + 5 * 3 - 1.5 }}m",
  473. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  474. "patternThrough-repeat": "30m",
  475. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  476. "patternThrough-polygon": "true",
  477. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  478. "patternThrough-pixelSize": "1.2m",
  479. "patternThrough-path-color": "white",
  480. "patternThrough-path-width": "0",
  481. "patternThrough-path-fillOpacity": "1",
  482. "patternThrough-lineOffset": "{{ lanes_width / -2 + 5 * 3 - 1.5 }}m",
  483. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  484. "patternLeft-repeat": "30m",
  485. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  486. "patternLeft-polygon": "true",
  487. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  488. "patternLeft-pixelSize": "1.2m",
  489. "patternLeft-path-color": "white",
  490. "patternLeft-path-width": "0",
  491. "patternLeft-path-fillOpacity": "1",
  492. "patternLeft-lineOffset": "{{ lanes_width / -2 + 5 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  493. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  494. "patternRight-repeat": "30m",
  495. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  496. "patternRight-polygon": "true",
  497. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  498. "patternRight-pixelSize": "1.2m",
  499. "patternRight-path-color": "white",
  500. "patternRight-path-width": "0",
  501. "patternRight-path-fillOpacity": "1",
  502. "patternRight-lineOffset": "{{ lanes_width / -2 + 5 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  503. },
  504. "style:sign6": {
  505. "_": "{% set lane_forward = backward_lanes < 6 %}{% set lane_turn = turn_lanes[6 - 1]|split(';') %}",
  506. "width": "0",
  507. "pattern0": "dash",
  508. "pattern0-repeat": "30m",
  509. "pattern0-pixelSize": "3m",
  510. "pattern0-offset": "15.0m",
  511. "pattern0-path-color": "white",
  512. "pattern0-path-width": "0.3m",
  513. "pattern0-lineOffset": "{{ lanes_width / -2 + 6 * 3 - 1.5 }}m",
  514. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  515. "patternThrough-repeat": "30m",
  516. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  517. "patternThrough-polygon": "true",
  518. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  519. "patternThrough-pixelSize": "1.2m",
  520. "patternThrough-path-color": "white",
  521. "patternThrough-path-width": "0",
  522. "patternThrough-path-fillOpacity": "1",
  523. "patternThrough-lineOffset": "{{ lanes_width / -2 + 6 * 3 - 1.5 }}m",
  524. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  525. "patternLeft-repeat": "30m",
  526. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  527. "patternLeft-polygon": "true",
  528. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  529. "patternLeft-pixelSize": "1.2m",
  530. "patternLeft-path-color": "white",
  531. "patternLeft-path-width": "0",
  532. "patternLeft-path-fillOpacity": "1",
  533. "patternLeft-lineOffset": "{{ lanes_width / -2 + 6 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  534. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  535. "patternRight-repeat": "30m",
  536. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  537. "patternRight-polygon": "true",
  538. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  539. "patternRight-pixelSize": "1.2m",
  540. "patternRight-path-color": "white",
  541. "patternRight-path-width": "0",
  542. "patternRight-path-fillOpacity": "1",
  543. "patternRight-lineOffset": "{{ lanes_width / -2 + 6 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  544. },
  545. "style:sign7": {
  546. "_": "{% set lane_forward = backward_lanes < 7 %}{% set lane_turn = turn_lanes[7 - 1]|split(';') %}",
  547. "width": "0",
  548. "pattern0": "dash",
  549. "pattern0-repeat": "30m",
  550. "pattern0-pixelSize": "3m",
  551. "pattern0-offset": "15.0m",
  552. "pattern0-path-color": "white",
  553. "pattern0-path-width": "0.3m",
  554. "pattern0-lineOffset": "{{ lanes_width / -2 + 7 * 3 - 1.5 }}m",
  555. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  556. "patternThrough-repeat": "30m",
  557. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  558. "patternThrough-polygon": "true",
  559. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  560. "patternThrough-pixelSize": "1.2m",
  561. "patternThrough-path-color": "white",
  562. "patternThrough-path-width": "0",
  563. "patternThrough-path-fillOpacity": "1",
  564. "patternThrough-lineOffset": "{{ lanes_width / -2 + 7 * 3 - 1.5 }}m",
  565. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  566. "patternLeft-repeat": "30m",
  567. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  568. "patternLeft-polygon": "true",
  569. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  570. "patternLeft-pixelSize": "1.2m",
  571. "patternLeft-path-color": "white",
  572. "patternLeft-path-width": "0",
  573. "patternLeft-path-fillOpacity": "1",
  574. "patternLeft-lineOffset": "{{ lanes_width / -2 + 7 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  575. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  576. "patternRight-repeat": "30m",
  577. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  578. "patternRight-polygon": "true",
  579. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  580. "patternRight-pixelSize": "1.2m",
  581. "patternRight-path-color": "white",
  582. "patternRight-path-width": "0",
  583. "patternRight-path-fillOpacity": "1",
  584. "patternRight-lineOffset": "{{ lanes_width / -2 + 7 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  585. },
  586. "style:sign8": {
  587. "_": "{% set lane_forward = backward_lanes < 8 %}{% set lane_turn = turn_lanes[8 - 1]|split(';') %}",
  588. "width": "0",
  589. "pattern0": "dash",
  590. "pattern0-repeat": "30m",
  591. "pattern0-pixelSize": "3m",
  592. "pattern0-offset": "15.0m",
  593. "pattern0-path-color": "white",
  594. "pattern0-path-width": "0.3m",
  595. "pattern0-lineOffset": "{{ lanes_width / -2 + 8 * 3 - 1.5 }}m",
  596. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  597. "patternThrough-repeat": "30m",
  598. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  599. "patternThrough-polygon": "true",
  600. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  601. "patternThrough-pixelSize": "1.2m",
  602. "patternThrough-path-color": "white",
  603. "patternThrough-path-width": "0",
  604. "patternThrough-path-fillOpacity": "1",
  605. "patternThrough-lineOffset": "{{ lanes_width / -2 + 8 * 3 - 1.5 }}m",
  606. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  607. "patternLeft-repeat": "30m",
  608. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  609. "patternLeft-polygon": "true",
  610. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  611. "patternLeft-pixelSize": "1.2m",
  612. "patternLeft-path-color": "white",
  613. "patternLeft-path-width": "0",
  614. "patternLeft-path-fillOpacity": "1",
  615. "patternLeft-lineOffset": "{{ lanes_width / -2 + 8 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  616. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  617. "patternRight-repeat": "30m",
  618. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  619. "patternRight-polygon": "true",
  620. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  621. "patternRight-pixelSize": "1.2m",
  622. "patternRight-path-color": "white",
  623. "patternRight-path-width": "0",
  624. "patternRight-path-fillOpacity": "1",
  625. "patternRight-lineOffset": "{{ lanes_width / -2 + 8 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  626. },
  627. "style:sign9": {
  628. "_": "{% set lane_forward = backward_lanes < 9 %}{% set lane_turn = turn_lanes[9 - 1]|split(';') %}",
  629. "width": "0",
  630. "pattern0": "dash",
  631. "pattern0-repeat": "30m",
  632. "pattern0-pixelSize": "3m",
  633. "pattern0-offset": "15.0m",
  634. "pattern0-path-color": "white",
  635. "pattern0-path-width": "0.3m",
  636. "pattern0-lineOffset": "{{ lanes_width / -2 + 9 * 3 - 1.5 }}m",
  637. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  638. "patternThrough-repeat": "30m",
  639. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  640. "patternThrough-polygon": "true",
  641. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  642. "patternThrough-pixelSize": "1.2m",
  643. "patternThrough-path-color": "white",
  644. "patternThrough-path-width": "0",
  645. "patternThrough-path-fillOpacity": "1",
  646. "patternThrough-lineOffset": "{{ lanes_width / -2 + 9 * 3 - 1.5 }}m",
  647. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  648. "patternLeft-repeat": "30m",
  649. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  650. "patternLeft-polygon": "true",
  651. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  652. "patternLeft-pixelSize": "1.2m",
  653. "patternLeft-path-color": "white",
  654. "patternLeft-path-width": "0",
  655. "patternLeft-path-fillOpacity": "1",
  656. "patternLeft-lineOffset": "{{ lanes_width / -2 + 9 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  657. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  658. "patternRight-repeat": "30m",
  659. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  660. "patternRight-polygon": "true",
  661. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  662. "patternRight-pixelSize": "1.2m",
  663. "patternRight-path-color": "white",
  664. "patternRight-path-width": "0",
  665. "patternRight-path-fillOpacity": "1",
  666. "patternRight-lineOffset": "{{ lanes_width / -2 + 9 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  667. },
  668. "style:sign10": {
  669. "_": "{% set lane_forward = backward_lanes < 10 %}{% set lane_turn = turn_lanes[10 - 1]|split(';') %}",
  670. "width": "0",
  671. "pattern0": "dash",
  672. "pattern0-repeat": "30m",
  673. "pattern0-pixelSize": "3m",
  674. "pattern0-offset": "15.0m",
  675. "pattern0-path-color": "white",
  676. "pattern0-path-width": "0.3m",
  677. "pattern0-lineOffset": "{{ lanes_width / -2 + 10 * 3 - 1.5 }}m",
  678. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  679. "patternThrough-repeat": "30m",
  680. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  681. "patternThrough-polygon": "true",
  682. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  683. "patternThrough-pixelSize": "1.2m",
  684. "patternThrough-path-color": "white",
  685. "patternThrough-path-width": "0",
  686. "patternThrough-path-fillOpacity": "1",
  687. "patternThrough-lineOffset": "{{ lanes_width / -2 + 10 * 3 - 1.5 }}m",
  688. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  689. "patternLeft-repeat": "30m",
  690. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  691. "patternLeft-polygon": "true",
  692. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  693. "patternLeft-pixelSize": "1.2m",
  694. "patternLeft-path-color": "white",
  695. "patternLeft-path-width": "0",
  696. "patternLeft-path-fillOpacity": "1",
  697. "patternLeft-lineOffset": "{{ lanes_width / -2 + 10 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  698. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  699. "patternRight-repeat": "30m",
  700. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  701. "patternRight-polygon": "true",
  702. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  703. "patternRight-pixelSize": "1.2m",
  704. "patternRight-path-color": "white",
  705. "patternRight-path-width": "0",
  706. "patternRight-path-fillOpacity": "1",
  707. "patternRight-lineOffset": "{{ lanes_width / -2 + 10 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  708. },
  709. "style:sign11": {
  710. "_": "{% set lane_forward = backward_lanes < 11 %}{% set lane_turn = turn_lanes[11 - 1]|split(';') %}",
  711. "width": "0",
  712. "pattern0": "dash",
  713. "pattern0-repeat": "30m",
  714. "pattern0-pixelSize": "3m",
  715. "pattern0-offset": "15.0m",
  716. "pattern0-path-color": "white",
  717. "pattern0-path-width": "0.3m",
  718. "pattern0-lineOffset": "{{ lanes_width / -2 + 11 * 3 - 1.5 }}m",
  719. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  720. "patternThrough-repeat": "30m",
  721. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  722. "patternThrough-polygon": "true",
  723. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  724. "patternThrough-pixelSize": "1.2m",
  725. "patternThrough-path-color": "white",
  726. "patternThrough-path-width": "0",
  727. "patternThrough-path-fillOpacity": "1",
  728. "patternThrough-lineOffset": "{{ lanes_width / -2 + 11 * 3 - 1.5 }}m",
  729. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  730. "patternLeft-repeat": "30m",
  731. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  732. "patternLeft-polygon": "true",
  733. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  734. "patternLeft-pixelSize": "1.2m",
  735. "patternLeft-path-color": "white",
  736. "patternLeft-path-width": "0",
  737. "patternLeft-path-fillOpacity": "1",
  738. "patternLeft-lineOffset": "{{ lanes_width / -2 + 11 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  739. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  740. "patternRight-repeat": "30m",
  741. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  742. "patternRight-polygon": "true",
  743. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  744. "patternRight-pixelSize": "1.2m",
  745. "patternRight-path-color": "white",
  746. "patternRight-path-width": "0",
  747. "patternRight-path-fillOpacity": "1",
  748. "patternRight-lineOffset": "{{ lanes_width / -2 + 11 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  749. },
  750. "style:sign12": {
  751. "_": "{% set lane_forward = backward_lanes < 12 %}{% set lane_turn = turn_lanes[12 - 1]|split(';') %}",
  752. "width": "0",
  753. "pattern0": "dash",
  754. "pattern0-repeat": "30m",
  755. "pattern0-pixelSize": "3m",
  756. "pattern0-offset": "15.0m",
  757. "pattern0-path-color": "white",
  758. "pattern0-path-width": "0.3m",
  759. "pattern0-lineOffset": "{{ lanes_width / -2 + 12 * 3 - 1.5 }}m",
  760. "patternThrough": "{% if 'through' in lane_turn %}arrowHead{% endif %}",
  761. "patternThrough-repeat": "30m",
  762. "patternThrough-offset": "{{ lane_forward ? '17m' : '12m' }}",
  763. "patternThrough-polygon": "true",
  764. "patternThrough-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
  765. "patternThrough-pixelSize": "1.2m",
  766. "patternThrough-path-color": "white",
  767. "patternThrough-path-width": "0",
  768. "patternThrough-path-fillOpacity": "1",
  769. "patternThrough-lineOffset": "{{ lanes_width / -2 + 12 * 3 - 1.5 }}m",
  770. "patternLeft": "{% if 'left' in lane_turn %}arrowHead{% endif %}",
  771. "patternLeft-repeat": "30m",
  772. "patternLeft-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  773. "patternLeft-polygon": "true",
  774. "patternLeft-angleCorrection": "{{ lane_forward ? -90 : 90 }}",
  775. "patternLeft-pixelSize": "1.2m",
  776. "patternLeft-path-color": "white",
  777. "patternLeft-path-width": "0",
  778. "patternLeft-path-fillOpacity": "1",
  779. "patternLeft-lineOffset": "{{ lanes_width / -2 + 12 * 3 - 1.5 + (lane_forward ? -1.25 : 1.25) }}m",
  780. "patternRight": "{% if 'right' in lane_turn %}arrowHead{% endif %}",
  781. "patternRight-repeat": "30m",
  782. "patternRight-offset": "{{ 15 + (lane_forward ? 1 : -1) * (2 - ('through' in lane_turn ? 2 : 0)) }}m",
  783. "patternRight-polygon": "true",
  784. "patternRight-angleCorrection": "{{ lane_forward ? 90 : -90 }}",
  785. "patternRight-pixelSize": "1.2m",
  786. "patternRight-path-color": "white",
  787. "patternRight-path-width": "0",
  788. "patternRight-path-fillOpacity": "1",
  789. "patternRight-lineOffset": "{{ lanes_width / -2 + 12 * 3 - 1.5 + (lane_forward ? 1.25 : -1.25) }}m"
  790. }
  791. },
  792. "info": [
  793. "<table>",
  794. " <tr>",
  795. " <td>{{ markerLine({'styles':'left,right,mark', 'style:left': { 'width': 3, 'color': 'grey', 'offset': -1.5 },'style:right': { 'width': 3, 'color': 'grey', 'offset': 1.5 },'style:mark': { 'width': 1, 'color': 'white'} })|raw }}</td>",
  796. " <td>{{ keyTrans('lanes') }}</td>",
  797. " </tr>",
  798. " <tr>",
  799. " <td>{{ markerLine({'styles':'left,right,mark', 'style:left': { 'width': 3, 'color': 'grey', 'offset': -1.5 },'style:right': { 'width': 3, 'color': 'grey', 'offset': 1.5 },'style:mark': { 'width': 1, 'color': 'white', 'dashArray': '5,5'} })|raw }}</td>",
  800. " <td>{{ keyTrans('lanes') }}</td>",
  801. " </tr>",
  802. " <tr>",
  803. " <td>{{ markerLine({ 'width': 5, 'color': 'orange' })|raw }}</td>",
  804. " <td>{{ keyTrans('parking:lane') }}</td>",
  805. " </tr>",
  806. " <tr>",
  807. " <td>{{ markerLine({ 'styles':'lane,mark', 'style:lane': { 'width': 5, 'color': 'orange' }, 'style:mark': { 'width': 5, 'color': const.parking.parallel.dashColor, 'dashArray': '1,10' } })|raw }}</td>",
  808. " <td>{{ keyTrans('parking:lane') }}: {{ tagTrans('parking:lane', 'parallel') }}</td>",
  809. " </tr>",
  810. " <tr>",
  811. " <td>{{ markerLine({ 'styles':'lane,mark1,mark2', 'style:lane': { 'width': 5, 'color': 'orange' }, 'style:mark1': { 'width': 2.5, 'color': const.parking.diagonal.dashColor, 'dashArray': '1,7', 'offset': 1.25 }, 'style:mark2': { 'width': 2.5, 'color': const.parking.diagonal.dashColor, 'dashArray': '1,7', 'dashOffset': '2', 'offset': -1.25 } })|raw }}</td>",
  812. " <td>{{ keyTrans('parking:lane') }}: {{ tagTrans('parking:lane', 'diagonal') }}</td>",
  813. " </tr>",
  814. " <tr>",
  815. " <td>{{ markerLine({ 'styles':'lane,mark', 'style:lane': { 'width': 5, 'color': 'orange' }, 'style:mark': { 'width': 5, 'color': const.parking.perpendicular.dashColor, 'dashArray': '1,6' } })|raw }}</td>",
  816. " <td>{{ keyTrans('parking:lane') }}: {{ tagTrans('parking:lane', 'perpendicular') }}</td>",
  817. " </tr>",
  818. " <tr>",
  819. " <td>{{ markerLine({ 'width': 5, 'color': '#af3f3f' })|raw }}</td>",
  820. " <td>{{ tagTrans('cycleway', 'lane') }}</td>",
  821. " </tr>",
  822. " <tr>",
  823. " <td>{{ markerLine({ 'width': 5, 'color': '#bf5f3f' })|raw }}</td>",
  824. " <td>{{ tagTrans('cycleway', 'track') }}</td>",
  825. " </tr>",
  826. " <tr>",
  827. " <td>{{ markerLine({ 'width': 5, 'color': '#4f4fbf' })|raw }}</td>",
  828. " <td>{{ keyTrans('sidewalk') }}</td>",
  829. " </tr>",
  830. "</table>"
  831. ],
  832. "const": {
  833. "parking": {
  834. "parallel": {
  835. "width": "2",
  836. "color": "orange",
  837. "dashColor": "blue",
  838. "dashDistance": "4"
  839. },
  840. "diagonal": {
  841. "width": "2.5",
  842. "color": "orange",
  843. "dashColor": "magenta",
  844. "dashDistance": "3",
  845. "dashType": "diagonal"
  846. },
  847. "perpendicular": {
  848. "width": "3",
  849. "color": "orange",
  850. "dashColor": "red",
  851. "dashDistance": "2.5"
  852. },
  853. "no_parking": {
  854. "width": "0.5",
  855. "color": "#7f0000"
  856. },
  857. "no_stopping": {
  858. "width": "0.5",
  859. "color": "#7f0000"
  860. },
  861. "fire_lane": {
  862. "width": "2",
  863. "color": "#ff0000"
  864. },
  865. "other": {
  866. "width": "2",
  867. "color": "#ff0000"
  868. },
  869. "no": {
  870. "width": "0",
  871. "color": "#000000"
  872. }
  873. }
  874. }
  875. }