Show human powered boat (canoe/kayak/standup paddleboard/etc) routes and amenities.
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.

164 lines
6.4 KiB

  1. type: overpass
  2. name:
  3. en: Paddlecraft
  4. query:
  5. '6': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn)(|;.*)$']
  6. '7': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn|npn)(|;.*)$']
  7. '8': relation[type=route][route~"^(|.*;)canoe(|;.*)$"][network~'^(|.*;)(ipn|npn|rpn)(|;.*)$']
  8. '9': relation[type=route][route~"^(|.*;)canoe(|;.*)$"]
  9. members: true
  10. feature:
  11. pre: |-
  12. {% set network = tags.network %}
  13. {% for n in tags.network|split(';') %}
  14. {% if n|matches('cn$') %}{% set network = n %}{% endif %}
  15. {% endfor %}
  16. title: '{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}'
  17. description: '{{ tagTrans(''network'', network) }}'
  18. markerSymbol: ''
  19. listMarkerSymbol: '{{ markerLine({ ''width'': 4, ''color'': const[network].color|default(const[''''].color) })|raw }}'
  20. priority: '{{ const[network].priority|default(4) }}'
  21. styles: ''
  22. style:hover:
  23. width: '0'
  24. style:selected:
  25. width: '0'
  26. memberFeature:
  27. pre: |-
  28. {% set priority = 4 %}
  29. {% set network = '' %}
  30. {% set refs = [] %}
  31. {% set dirForward = false %}
  32. {% set dirBackward = false %}
  33. {% set hover = false %}
  34. {% set selected = false %}
  35. {% for master in masters %}
  36. {% set masterNetwork = '' %}
  37. {% for n in master.tags.network|split(';') %}
  38. {% if n|matches('cn$') %}{% set masterNetwork = n %}{% endif %}
  39. {% endfor %}
  40. {% set _p = const[masterNetwork].priority|default(4) %}
  41. {% if _p < priority %}
  42. {% set priority = _p %}
  43. {% set network = masterNetwork %}
  44. {% endif %}
  45. {% if master.tags.ref %}
  46. {% set refs = refs|merge([ master.tags.ref ]) %}
  47. {% endif %}
  48. {% if master.role == 'forward' %}{% set dirForward = true %}
  49. {% elseif master.role == 'backward' %}{% set dirBackward = true %}
  50. {% else %}{% set dirForward = true %}{% set dirBackward = true %}
  51. {% endif %}
  52. {% if master.flags.hover %}{% set hover = master.role|default('both') %}{% endif %}
  53. {% if master.flags.selected %}{% set selected = master.role|default('both') %}{% endif %}
  54. {% endfor %}
  55. title: ''
  56. body: |-
  57. <h4>Routes</h4>
  58. <ul class='overpass-layer-list'>
  59. {% for master in masters %}
  60. {% set masterNetwork = '' %}
  61. {% for n in master.tags.network|split(';') %}
  62. {% if n|matches('cn$') %}{% set masterNetwork = n %}{% endif %}
  63. {% endfor %}
  64. <li data-object="{{ master.id }}"><a>
  65. <div class='marker'>
  66. <div class='symbol'>{{ markerLine({ width: 4, color: const[masterNetwork].color|default(const[''].color) })|raw }}</div>
  67. </div>
  68. <div class='content'>
  69. <div class='description'>{{ tagTrans('network', masterNetwork) }}</div>
  70. <div class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</div>
  71. </div>
  72. </a></li>
  73. {% endfor %}
  74. </ul>
  75. listExclude: '1'
  76. styles: default{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}
  77. style:
  78. width: '4'
  79. color: '{{ const[network].color }}'
  80. opacity: '1'
  81. lineCap: '{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}'
  82. dashArray: '{% if not dirForward or not dirBackward %}27,8{% endif %}'
  83. dashOffset: '{% if dirBackward %}28{% else %}0{% endif %}'
  84. noClip: '{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}'
  85. text: '{{ refs|join('' · '') }} '
  86. textRepeat: '1'
  87. textOffset: '12'
  88. pattern: '{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}'
  89. pattern-offset: '{% if dirBackward %}4{% else %}30.5{% endif %}'
  90. pattern-repeat: '35'
  91. pattern-polygon: 'true'
  92. pattern-pixelSize: '9'
  93. pattern-angleCorrection: '{% if dirBackward %}180{% else %}0{% endif %}'
  94. pattern-path-width: '0'
  95. pattern-path-color: '{{ const[network].color }}'
  96. pattern-path-fillOpacity: '1'
  97. textFontWeight: bold
  98. style:hover:
  99. pane: hover
  100. width: '4'
  101. color: black
  102. lineCap: '{% if hover == ''forward'' or hover == ''backward'' %}butt{% else %}round{% endif %}'
  103. dashArray: '{% if hover == ''forward'' or hover == ''backward'' %}27,8{% endif %}'
  104. dashOffset: '{% if hover == ''backward'' %}28{% else %}0{% endif %}'
  105. noClip: '{% if hover == ''forward'' or hover == ''backward'' %}true{% else %}false{% endif %}'
  106. pattern: '{% if hover == ''forward'' or hover == ''backward'' %}arrowHead{% endif %}'
  107. pattern-offset: '{% if hover == ''backward'' %}4{% else %}30.5{% endif %}'
  108. pattern-repeat: '35'
  109. pattern-polygon: 'true'
  110. pattern-pixelSize: '9'
  111. pattern-angleCorrection: '{% if hover == ''backward'' %}180{% else %}0{% endif %}'
  112. pattern-path-width: '0'
  113. pattern-path-color: black
  114. pattern-path-fillOpacity: '1'
  115. style:selected:
  116. pane: selected
  117. width: '4'
  118. color: '#3f3f3f'
  119. lineCap: '{% if selected == ''forward'' or selected == ''backward'' %}butt{% else %}round{% endif %}'
  120. dashArray: '{% if selected == ''forward'' or selected == ''backward'' %}27,8{% endif %}'
  121. dashOffset: '{% if selected == ''backward'' %}28{% else %}0{% endif %}'
  122. noClip: '{% if selected == ''forward'' or selected == ''backward'' %}true{% else %}false{% endif %}'
  123. pattern: '{% if selected == ''forward'' or selected == ''backward'' %}arrowHead{% endif %}'
  124. pattern-offset: '{% if selected == ''backward'' %}4{% else %}30.5{% endif %}'
  125. pattern-repeat: '35'
  126. pattern-polygon: 'true'
  127. pattern-pixelSize: '9'
  128. pattern-angleCorrection: '{% if selected == ''backward'' %}180{% else %}0{% endif %}'
  129. pattern-path-width: '0'
  130. pattern-path-color: '#3f3f3f'
  131. pattern-path-fillOpacity: '1'
  132. const:
  133. ipn:
  134. color: '#ff0000'
  135. priority: 0
  136. zoom: 6
  137. npn:
  138. color: '#ff00ba'
  139. priority: 1
  140. zoom: 9
  141. rpn:
  142. color: '#ba00ff'
  143. priority: 2
  144. zoom: 12
  145. lpn:
  146. color: '#0000ff'
  147. priority: 3
  148. zoom: 15
  149. '':
  150. color: '#007fff'
  151. priority: 4
  152. zoom: 15
  153. info: |-
  154. <table>
  155. {% for value, data in const %}
  156. {% if data.zoom <= map.zoom %}
  157. <tr>
  158. <td>{{ markerLine({ 'width': 4, color: data.color })|raw }}</td>
  159. <td>{% if value %}{{ tagTrans('network', value) }}{% else %}{{ trans('unknown') }}{% endif %}</td>
  160. </tr>
  161. {% endif %}
  162. {% endfor %}
  163. </table>