Compare commits

...
Sign in to create a new pull request.

7 commits

30 changed files with 1216 additions and 6 deletions

View file

@ -0,0 +1,55 @@
{
"minzoom": 13,
"pointRendering": [
{
"location": [
"point",
"centroid"
],
"marker": [
{
"icon": "circle",
"color": "white"
},
{
"icon": "./assets/layers/chandler/chandler.svg"
}
],
"iconSize": "80,80"
}
],
"tagRenderings": [
"shop.*"
],
"lineRendering": [
{
"width": 1,
"color": "blue"
}
],
"id": "chandler",
"name": {
"en": "Chandlers"
},
"description": {
"en": "Boating supplies and equipment."
},
"source": {
"osmTags": {
"or": [
"shop=chandler",
"shop=ship_chandler",
"seamark:small_craft_facility:category=chandler",
"shop=chandlery"
]
}
},
"title": {
"render": {
"en": "Chandler {name}"
}
},
"allowMove": true,
"credits": "Pieter Vander Vennet",
"credits:uid": 3818858
}

View file

@ -0,0 +1,5 @@
<svg width="1060" height="1060" viewBox="0 0 1060 1060" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M435 645C435 645 435 615.72 435 490C435 406.216 580 406.216 580 490C580 645 580 645 580 645" stroke="#930093" stroke-width="30.3"/>
<path d="M395 605H605" stroke="#930093" stroke-width="30"/>
<path d="M661.5 602.5C661.5 609.793 658.603 616.788 653.445 621.945C648.288 627.103 641.293 630 634 630C626.707 630 619.712 627.103 614.555 621.945C609.397 616.788 606.5 609.793 606.5 602.5C606.5 595.207 609.397 588.212 614.555 583.055C619.712 577.897 626.707 575 634 575C641.293 575 648.288 577.897 653.445 583.055C658.603 588.212 661.5 595.207 661.5 602.5V602.5Z" stroke="#930093" stroke-width="15"/>
</svg>

After

Width:  |  Height:  |  Size: 715 B

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: OsmAnd
SPDX-License-Identifier: GPLv3

View file

@ -0,0 +1,12 @@
[
{
"path": "chandler.svg",
"license": "GPLv3",
"authors": [
"OsmAnd"
],
"sources": [
"https://github.com/osmandapp/OsmAnd-resources/tree/master"
]
}
]

View file

@ -0,0 +1,37 @@
{
"id": "lock_outline",
"name": {
"en": "Lock area"
},
"description": {
"en": "Small layer showing the outline of the lock waterway, but without containing any information"
},
"source": {
"osmTags": "water=lock"
},
"minzoom": 15,
"title": null,
"pointRendering": [
{
"location": [
"point"
],
"marker": [
{
"icon": "circle",
"color": "white"
}
]
}
],
"lineRendering": [
{
"width": 1,
"color": "blue"
}
],
"tagRenderings": [],
"allowMove": false,
"credits": "Pieter Vander Vennet",
"credits:uid": 3818858
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: JogGrapher
SPDX-License-Identifier: CC0-1.0

View file

@ -0,0 +1,22 @@
[
{
"path": "Marina_in_Seething_Wells.jpg",
"license": "CC0-1.0",
"authors": [
"JogGrapher"
],
"sources": [
"https://commons.wikimedia.org/wiki/File:Marina_in_Seething_Wells.jpg"
]
},
{
"path": "marina.svg",
"license": "CC0-1.0",
"authors": [
"DePiep"
],
"sources": [
"https://commons.wikimedia.org/wiki/File:BSicon_ANCHOR.svg"
]
}
]

View file

@ -0,0 +1,167 @@
{
"credits": "Pieter Vander Vennet",
"minzoom": 10,
"pointRendering": [
{
"location": [
"point",
"centroid"
],
"marker": [
{
"icon": "circle",
"color": "white"
},
{
"icon": "./assets/layers/marina/marina.svg"
}
]
}
],
"tagRenderings": [
"phone",
"images",
{
"question": {
"en": "What is the name of this marina?"
},
"id": "marina-name",
"freeform": {
"key": "name"
},
"render": {
"en": "The name of this marina is: {name}"
}
},
"website",
"opening_hours_24_7",
"internet-all",
"wikipedia",
{
"question": {
"en": "Does this marina have a sanitary dump station?"
},
"id": "marina-sewage-station",
"questionHint": {
"en": "Does this marina provide facilities for pump out or other black water disposal."
},
"mappings": [
{
"if": "sanitary_dump_station=yes",
"then": {
"en": "This marina does provide facilities to dispose of sewage."
}
},
{
"if": "sanitary_dump_station=no",
"then": {
"en": "This marina does not provide facilities to dispose of sewage."
}
},
{
"if": "sanitary_dump_station=customers",
"then": {
"en": "Only customers are allowed to use the facilities here to dispose of sewage."
}
}
]
},
{
"question": {
"en": "Do the wastewater facilities here provide a means of pumping out a sewage tank?"
},
"id": "marina_dump_station",
"condition": {
"or": [
"sanitary_dump_station=yes",
"sanitary_dump_station=customers"
]
},
"mappings": [
{
"if": "sanitary_dump_station:pump-out=yes",
"then": {
"en": "This marina offers toilet pump-out services"
}
},
{
"if": "sanitary_dump_station:pump-out=no",
"then": {
"en": "There is no toilet pump-out service at this marina"
}
}
]
},
{
"condition": {
"or": [
"sanitary_dump_station=yes",
"sanitary_dump_station=customers"
]
},
"id": "marina_basin",
"question": {
"en": "Does this sanitary dump station provide the means to empty a toilet cassette or other container into a basin?"
},
"mappings": [
{
"if": "sanitary_dump_station:basin=yes",
"then": {
"en": "You can empty toilet cassettes into a basin here."
}
},
{
"if": "sanitary_dump_station:basin=no",
"then": {
"en": "There is no basin to empty a toilet cassettes here."
}
}
]
}
],
"lineRendering": [
{
"width": 1,
"color": "blue"
}
],
"id": "marina",
"name": {
"en": "Marinas"
},
"description": {
"en": "Marinas and yacht havens for small craft."
},
"source": {
"osmTags": {
"or": [
"leisure=marina",
"seamark:harbour:category=marina",
"seamark:harbour:category=marina_no_facilities"
]
}
},
"title": {
"render": {
"en": "Marina {name}"
},
"icon": "./assets/layers/marina/marina.svg"
},
"presets": [
{
"title": {
"en": "a marina"
},
"tags": [
"leisure=marina",
"seamark:harbour:category=marina",
"seamark:type=harbour"
],
"exampleImages": [
"./assets/layers/marina/Marina_in_Seething_Wells.jpg"
]
}
],
"allowMove": true,
"credits:uid": 3818858
}

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500">
<title>ANCHOR</title>
<g stroke="black" fill="none">
<circle cx="250" cy="80" r="40" stroke-width="20" />
<path d="M 250,125 V 440 M 150,185 H 350 M 100,347 C 130,460 370,460 400,347" stroke-width="30" />
</g>
<g fill="black">
<circle cx="250" cy="115" r="20" />
<path d="M 55,365 L 75,260 150,330 Z M 225,440 L 250,470 275,440 Z M 445,365 L 425,260 350,330 Z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 484 B

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: DePiep
SPDX-License-Identifier: CC0-1.0

View file

@ -0,0 +1,73 @@
{
"credits": "Pieter Vander Vennet",
"minzoom": 15,
"pointRendering": null,
"tagRenderings": [
"images",
{
"question": {
"en": "Which boats are allowed to moor here?"
},
"id": "allowed_boats",
"multiAnswer": true,
"mappings": [
{
"if": "motorboat=yes",
"ifnot": "motorboat=no",
"then": {
"en": "Small motorboats (<20m) are allowed here"
}
},
{
"if": "sailboat=yes",
"ifnot": "sailboat=no",
"then": {
"en": "Small sailboats (<20m) are allowed here"
}
},
{
"if": "canoe=yes",
"ifnot": "canoe=no",
"then": {
"en": "Canoes and kayaks are allowed here"
}
}
]
}
],
"lineRendering": [
{
"width": 1,
"color": "blue"
}
],
"id": "piers_and_quays",
"name": {
"en": "Piers and quays"
},
"description": {
"en": "Piers and quays are structures next to or on the water where people might walk on and where boats might be moored"
},
"source": {
"osmTags": {
"or": [
"man_made=pier",
"man_made=quay"
]
}
},
"title": {
"render": {
"en": "{name}"
},
"mappings": [
{
"if": "man_made=pier",
"then": {
"en": "Pier {name}"
}
}
]
},
"allowMove": false
}

View file

@ -0,0 +1,187 @@
{
"id": "waterway",
"name": {
"en": "Navigable waterways"
},
"description": {
"en": "Waterways which are navigable by small boats, yachts, ..."
},
"source": {
"osmTags": {
"and": [
"motorboat!=no",
"boat!=no",
"type=",
{
"or": [
"waterway=river",
"waterway=canal"
]
}
]
}
},
"title": {
"en": "{name}"
},
"pointRendering": null,
"lineRendering": [
{
"width": {
"mappings": [
{
"if": "waterway=canal",
"then": "8"
},
{
"if": "waterway=river",
"then": "8"
},
{
"if": "waterway=stream",
"then": "6"
}
]
},
"color": {
"render": "blue",
"mappings": [
{
"if": "boat=no",
"then": "red"
},
{
"if": "motorboat=yes",
"then": "#00ff00"
},
{
"if": "boat=yes",
"then": "#00cc00"
}
]
}
}
],
"tagRenderings": [
"images",
{
"id": "name",
"question": {
"en": "What is the name of this waterway?"
},
"render": {
"en": "This waterway is named {name}"
},
"freeform": {
"key": "name"
}
},
"wikipedia",
{
"id": "type",
"question": {
"en": "What type of waterway is this?"
},
"mappings": [
{
"if": "waterway=river",
"then": {
"en": "This is a river"
}
},
{
"if": "waterway=canal",
"then": {
"en": "This is a canal"
}
},
{
"if": "waterway=stream",
"then": {
"en": "This is a stream "
}
}
]
},
{
"question": {
"en": "Are boats allowed on this waterway?"
},
"label": [
"access"
],
"id": "boats_allowed",
"questionHint": {
"en": "A boat is a floating craft of which the hull is less then 20 meter long (without rudder or bowsprit)"
},
"mappings": [
{
"if": "boat=yes",
"then": {
"en": "Boats (<20m) are allowed on this waterway"
},
"alsoShowIf": "motorboat=yes"
},
{
"if": "boat=no",
"then": {
"en": "Boats (<20m) are <b>not</b> allowed on this waterway"
},
"addExtraTags": [
"motorboat="
]
}
]
},
{
"question": {
"en": "Are motorboats allowed on this waterway?"
},
"id": "motorboats_allowed",
"label": [
"access"
],
"mappings": [
{
"if": "motorboat=yes",
"then": {
"en": "Motorized boats are allowed"
}
},
{
"if": "motorboat=no",
"then": {
"en": "Motorized boats are <b>not</b> allowed"
}
}
]
},
{
"question": {
"en": "Are canoes, kayaks and other small, manually powered craft allowed on this waterway?"
},
"id": "canoes_allowed",
"label": [
"access"
],
"mappings": [
{
"if": "canoe=yes",
"then": {
"en": "Canoes, kayaks and manually powered craft are allowed here"
}
},
{
"if": "canoe=no",
"then": {
"en": "Canoes, kayaks and other manually powered craft are <b>not</b> allowed"
}
}
]
}
],
"allowMove": false,
"credits": "Pieter Vander Vennet",
"credits:uid": 3818858
}

View file

@ -0,0 +1,12 @@
[
{
"path": "waterway_lock.svg",
"license": "CC0-1.0",
"authors": [
"Oosoom"
],
"sources": [
"https://commons.wikimedia.org/wiki/File:BSicon_uLOCKSl.svg"
]
}
]

View file

@ -0,0 +1,240 @@
{
"id": "waterway_lock",
"name": {
"en": "Locks"
},
"description": {
"en": "Locks on canals, rivers and other navigable waterways "
},
"source": {
"osmTags": "lock=yes"
},
"minzoom": 10,
"title": {
"render": {
"en": "{lock_name} Lock {lock_ref} (on {name})"
}
},
"pointRendering": [
{
"location": [
"point",
"polygon_centroid",
"projected_centerpoint"
],
"marker": [
{
"icon": "circle",
"color": "white"
},
{
"icon": "./assets/layers/waterway_lock/waterway_lock.svg"
}
],
"rotation": "calc( {_direction:centerpoint}deg - 90deg )",
"pitchAlignment": "map",
"label": {
"mappings": [
{
"if": {
"and": [
"lock_name~*",
"vhf~*"
]
},
"then": {
"en": "{lock_name} (VHF {vhf})"
}
},
{
"if": "lock_name~*",
"then": {
"en": "{lock_name}"
}
}
]
},
"labelCssClasses": "bg-white rounded px-2"
}
],
"lineRendering": [
{
"width": 1,
"color": "blue"
}
],
"tagRenderings": [
"images",
"opening_hours_24_7",
{
"question": {
"en": "What VHF channel should be used to communicate with the control room of this lock?"
},
"id": "vhf",
"render": {
"en": "The VHF channel is {vhf}"
},
"freeform": {
"key": "vhf"
},
"condition": {
"or": [
"automated=yes",
"automated="
]
}
},
"phone",
{
"builtin": "website",
"override": {
"question": {
"en": "On what website can one find more information about this lock?"
}
}
},
{
"question": {
"en": "What is the maximum width (beam) of boats using this lock?"
},
"id": "max_width",
"render": {
"en": "This lock permits boats with a maximum width of {maxwidth}"
},
"freeform": {
"key": "maxwidth",
"unit": "length"
},
"questionHint": {
"en": "Omit units if designated in meters. Feet and inches maybe indicated with apostrophes and quotation marks."
},
"condition": "waterway!=derelict_canal"
},
{
"question": {
"en": "What is the maximum length of boats that may use this lock?"
},
"id": "maxlength",
"multiAnswer": false,
"freeform": {
"key": "maxlength"
},
"render": {
"en": "Boats with a maximum length of {maxlength} may use this lock."
},
"questionHint": {
"en": "Omit units if designated in meters. Feet and inches maybe indicated with apostrophes and quotation marks."
},
"condition": "waterway!=derelict_canal"
},
{
"question": {
"en": "What is the maximum draft of boats using this lock?",
"nl": "Wat is de maximale toegestane diepgang in deze sluis?"
},
"id": "max_depth",
"questionHint": {
"en": "Omit units if designated in meters. Feet and inches maybe indicated with apostrophes and quotation marks."
},
"multiAnswer": false,
"render": {
"en": "The maximum draft of boats using this lock is {draft}."
},
"freeform": {
"key": "draft"
},
"condition": "waterway!=derelict_canal"
},
{
"question": {
"en": "How far does this lock raise or lower a boat?"
},
"id": "lock_height_difference",
"questionHint": {
"en": "Omit units if designated in meters. Feet and inches maybe indicated with apostrophes and quotation marks."
},
"multiAnswer": false,
"freeform": {
"key": "lock:height",
"type": "nat"
},
"render": {
"en": "This lock has a drop height of {lock:height}"
},
"condition": "waterway!=derelict_canal"
},
{
"question": {
"en": "Is this lock automated?"
},
"id": "automated",
"mappings": [
{
"if": "automated=yes",
"then": {
"en": "This lock is automated (operated from control panel or control room)"
},
"addExtraTags": [
"manual=no"
]
},
{
"if": "manual=yes",
"then": {
"en": "This lock is manually operated (with muscle power)"
},
"addExtraTags": [
"automated=no"
]
}
],
"multiAnswer": false,
"condition": "waterway!=derelict_canal"
},
{
"question": {
"en": "What is the name of the waterway that this lock is on?"
},
"id": "lock_waterway_name",
"render": {
"en": "The waterway is name <b>{name}</b>"
},
"freeform": {
"key": "name"
}
},
{
"question": {
"en": "What is the name of this lock?"
},
"id": "lock_name",
"questionHint": {
"en": "The numerical reference code can be added in a follow-up question "
},
"multiAnswer": false,
"render": {
"en": "This lock is named {lock_name}"
},
"freeform": {
"key": "lock_name"
}
},
{
"question": {
"en": "Does this lock have a reference number/code?"
},
"id": "ref",
"multiAnswer": false,
"render": {
"en": "This is lock {lock_ref}"
},
"freeform": {
"key": "lock_ref"
}
},
"waterway.access"
],
"allowMove": false,
"credits": "Pieter Vander Vennet",
"credits:uid": 3818858
}

View file

@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500px" height="500px" viewBox="0 0 500 500">
<title>BSicon lock complex</title>
<defs>
<linearGradient gradientTransform="rotate(90)" id="gate">
<stop offset="0%" stop-color="#000" />
<stop offset="33.3%" stop-color="#000" />
<stop offset="33.3%" stop-color="#FFF" />
<stop offset="66.7%" stop-color="#FFF" />
<stop offset="66.7%" stop-color="#000" />
<stop offset="100%" stop-color="#000" />
</linearGradient>
</defs>
<polygon stroke="none" fill="#FFF" points="440,400 340,250 440,100 140,100 40,250 140,400"/>
<rect width="500" height="100" x="0" y="200" style="fill:#039"/>
<polygon stroke="url(#gate)" stroke-width="40px" fill="none" points="440,400 340,250 440,100 140,100 40,250 140,400"/>
</svg>

After

Width:  |  Height:  |  Size: 763 B

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Oosoom
SPDX-License-Identifier: CC0-1.0

View file

@ -368,6 +368,10 @@
"if": "theme=memorials",
"then": "./assets/layers/memorial/memorial.svg"
},
{
"if": "theme=narrowboat",
"then": "./assets/themes/narrowboat/boat.svg"
},
{
"if": "theme=nature",
"then": "./assets/themes/nature/logo.svg"

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
enable-background="new 0 0 255.1 255.1"
version="1.1"
viewBox="0 0 203.39999 192.65533"
xml:space="preserve"
id="svg2"
sodipodi:docname="boat.svg"
width="203.39999"
height="192.65533"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.2971383"
inkscape:cx="101.86587"
inkscape:cy="97.294968"
inkscape:window-width="1920"
inkscape:window-height="995"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<style
type="text/css"
id="style1">
.st0{fill:#AFDFF9;}
.st1{clip-path:url(#a);}
</style>
<defs
id="defs1">
<path
id="b"
d="M 126.9,6.9 H 22.8 c -8.9,0 -16,7.1 -16.1,16 v 208.3 c 0,8.9 7.2,16.1 16.1,16.1 H 231 c 8.9,0 16.1,-7.2 16.1,-16.1 V 22.9 C 247,14 239.9,6.9 231,6.9 Z" />
</defs>
<clipPath
id="a">
<use
xlink:href="#b"
id="use1" />
</clipPath>
<g
class="st1"
clip-path="url(#a)"
id="g2"
transform="translate(-25.7,-29.887382)">
<path
d="m 139.7,39.8 -0.3,-6 c -0.2,-1.3 -1.2,-2.3 -2.6,-2.6 -3.1,-0.9 -6.3,-1.4 -9.6,-1.3 -3.2,-0.1 -6.4,0.4 -9.5,1.3 -1.3,0.2 -2.4,1.2 -2.5,2.6 l -0.3,6 c 4,-0.8 8.1,-1.3 12.2,-1.3 4.3,0.1 8.5,0.5 12.6,1.3 m 60.2,86.5 C 198,121.7 190,120 185.2,117.4 H 185 V 65.1 c 0,-3.3 -2.7,-6 -6,-6 H 140.6 L 140,46.6 c -4.2,-0.9 -8.5,-1.3 -12.9,-1.3 -4.2,0 -8.4,0.5 -12.5,1.3 L 114,59.1 H 75.7 c -3.3,0 -6,2.7 -6,6 v 52.2 h -0.1 c -4.9,2.6 -12.8,4.3 -14.8,8.9 -0.9,1.8 -1,3.9 -0.1,5.8 4.9,12.5 10.3,24.9 15.5,37.1 v 20.1 c 2,0.5 4.1,0.7 6.1,0.6 4.9,0 6.7,-0.9 12.2,-3.7 3.8,-1.9 7.9,-2.9 12.1,-3.1 4.2,0.2 8.3,1.2 12.1,3.1 3.4,1.6 8.6,4.1 14.4,3.7 h 0.1 c 4.9,0 6.7,-0.9 12.2,-3.7 3.8,-1.9 7.9,-2.9 12.1,-3.1 4.2,0.2 8.3,1.2 12.1,3.1 3.4,1.6 8.6,4.1 14.4,3.7 2.2,0.1 4.3,-0.3 6.3,-1 v -19.6 c 5.2,-12.2 10.7,-24.6 15.6,-37.1 1,-1.9 0.9,-4 0,-5.8 M 173,112.6 171.9,112.2 127.4,94 82.9,112.2 81.8,112.6 V 71.1 H 173 Z m 41.7,85.9 c 3.4,1.6 8.6,4.1 14.4,3.7 v 20.3 c -5.9,0.4 -11,-2.1 -14.4,-3.7 -3.8,-1.9 -7.9,-2.9 -12.1,-3.1 -4.2,0.2 -8.3,1.2 -12.1,3.1 -5.5,2.7 -7.3,3.7 -12.2,3.7 -5.9,0.4 -11,-2.1 -14.4,-3.7 -3.8,-1.9 -7.9,-2.9 -12.1,-3.1 -4.2,0.2 -8.3,1.2 -12.1,3.1 -5.6,2.7 -7.4,3.7 -12.3,3.7 h -0.1 c -5.9,0.4 -11,-2.1 -14.4,-3.7 -3.8,-1.9 -7.9,-2.9 -12.1,-3.1 -4.2,0.2 -8.3,1.2 -12.1,3.1 -5.5,2.7 -7.4,3.7 -12.2,3.7 -5.9,0.4 -11,-2.1 -14.4,-3.7 -3.8,-1.9 -7.9,-2.9 -12.1,-3.1 -4.2,0.2 -8.3,1.2 -12.1,3.1 -5.5,2.7 -7.3,3.7 -12.2,3.7 v -20.3 c 4.9,0 6.7,-0.9 12.2,-3.7 3.8,-1.9 7.9,-2.9 12.1,-3.1 4.2,0.2 8.3,1.2 12.1,3.1 3.4,1.6 8.6,4.1 14.4,3.7 4.9,0 6.7,-0.9 12.2,-3.7 3.8,-1.9 7.9,-2.9 12.1,-3.1 4.2,0.2 8.3,1.2 12.1,3.1 3.5,1.6 8.6,4.1 14.4,3.7 h 0.1 c 4.9,0 6.7,-0.9 12.2,-3.7 3.8,-1.9 7.9,-2.9 12.1,-3.1 4.2,0.2 8.3,1.2 12.1,3.1 3.5,1.6 8.6,4.1 14.4,3.7 4.9,0 6.7,-0.9 12.2,-3.7 3.8,-1.9 7.9,-2.9 12.1,-3.1 4.3,0.2 8.4,1.2 12.2,3.1"
id="path2" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Officialworks
SPDX-License-Identifier: CC-BY-SA 4.0 Intl

View file

@ -0,0 +1,12 @@
[
{
"path": "boat.svg",
"license": "CC-BY-SA 4.0 Intl",
"authors": [
"Officialworks"
],
"sources": [
"https://commons.wikimedia.org/wiki/File:SL_Boat_Symbol.svg"
]
}
]

View file

@ -0,0 +1,37 @@
{
"id": "narrowboat",
"title": {
"en": "Narrowboat Amenities"
},
"description": {
"en": "Features of interest to narrowboats and similar cruisers on inland waterways. "
},
"icon": "./assets/themes/narrowboat/boat.svg",
"startZoom": 5,
"startLat": 54.44,
"startLon": -5.23,
"layers": [
"waterway_lock",
"waterway",
"lock_outline",
"marina",
"chandler",
"piers_and_quays",
{
"builtin": [
"drinking_water",
"shower",
"toilet"
],
"override": {
"minzoom": 14
}
}
],
"#layers": [
"https://studio.mapcomplete.org/89098/layers/waterway_sanitary_dump_station/waterway_sanitary_dump_station.json",
"https://studio.mapcomplete.org/89098/layers/fuel_dock/fuel_dock.json",
"https://studio.mapcomplete.org/89098/layers/water_point/water_point.json",
"https://studio.mapcomplete.org/89098/layers/winding_holes/winding_holes.json"
]
}

View file

@ -896,4 +896,4 @@
"startsWithQ": "A wikidata identifier starts with Q and is followed by a number"
}
}
}
}

View file

@ -2265,6 +2265,13 @@
"render": "Camper site {name}"
}
},
"chandler": {
"description": "Boating supplies and equipment.",
"name": "Chandlers",
"title": {
"render": "Chandler {name}"
}
},
"charging_station": {
"description": "A charging station",
"filter": {
@ -6379,6 +6386,10 @@
"render": "lighthouse"
}
},
"lock_outline": {
"description": "Small layer showing the outline of the lock waterway, but without containing any information",
"name": "Lock area"
},
"love_hotel": {
"description": "A love hotel is a type of short-stay hotel found around the world operated primarily for the purpose of allowing guests privacy for sexual activities",
"name": "Love hotels",
@ -6653,6 +6664,61 @@
"render": "Item in MapRoulette"
}
},
"marina": {
"description": "Marinas and yacht havens for small craft.",
"name": "Marinas",
"presets": {
"0": {
"title": "a marina"
}
},
"tagRenderings": {
"marina-name": {
"question": "What is the name of this marina?",
"render": "The name of this marina is: {name}"
},
"marina-sewage-station": {
"mappings": {
"0": {
"then": "This marina does provide facilities to dispose of sewage."
},
"1": {
"then": "This marina does not provide facilities to dispose of sewage."
},
"2": {
"then": "Only customers are allowed to use the facilities here to dispose of sewage."
}
},
"question": "Does this marina have a sanitary dump station?",
"questionHint": "Does this marina provide facilities for pump out or other black water disposal."
},
"marina_basin": {
"mappings": {
"0": {
"then": "You can empty toilet cassettes into a basin here."
},
"1": {
"then": "There is no basin to empty a toilet cassettes here."
}
},
"question": "Does this sanitary dump station provide the means to empty a toilet cassette or other container into a basin?"
},
"marina_dump_station": {
"mappings": {
"0": {
"then": "This marina offers toilet pump-out services"
},
"1": {
"then": "There is no toilet pump-out service at this marina"
}
},
"question": "Do the wastewater facilities here provide a means of pumping out a sewage tank?"
}
},
"title": {
"render": "Marina {name}"
}
},
"maxspeed": {
"description": "Shows the allowed speed for every road",
"name": "Maxspeed",
@ -7592,6 +7658,34 @@
"render": "Picnic table"
}
},
"piers_and_quays": {
"description": "Piers and quays are structures next to or on the water where people might walk on and where boats might be moored",
"name": "Piers and quays",
"tagRenderings": {
"allowed_boats": {
"mappings": {
"0": {
"then": "Small motorboats (<20m) are allowed here"
},
"1": {
"then": "Small sailboats (<20m) are allowed here"
},
"2": {
"then": "Canoes and kayaks are allowed here"
}
},
"question": "Which boats are allowed to moor here?"
}
},
"title": {
"mappings": {
"0": {
"then": "Pier {name}"
}
},
"render": "{name}"
}
},
"playground": {
"deletion": {
"nonDeleteMappings": {
@ -12467,6 +12561,141 @@
"render": "Waste Disposal"
}
},
"waterway": {
"description": "Waterways which are navigable by small boats, yachts, ...",
"name": "Navigable waterways",
"tagRenderings": {
"boats_allowed": {
"mappings": {
"0": {
"then": "Boats (<20m) are allowed on this waterway"
},
"1": {
"then": "Boats (<20m) are <b>not</b> allowed on this waterway"
}
},
"question": "Are boats allowed on this waterway?",
"questionHint": "A boat is a floating craft of which the hull is less then 20 meter long (without rudder or bowsprit)"
},
"canoes_allowed": {
"mappings": {
"0": {
"then": "Canoes, kayaks and manually powered craft are allowed here"
},
"1": {
"then": "Canoes, kayaks and other manually powered craft are <b>not</b> allowed"
}
},
"question": "Are canoes, kayaks and other small, manually powered craft allowed on this waterway?"
},
"motorboats_allowed": {
"mappings": {
"0": {
"then": "Motorized boats are allowed"
},
"1": {
"then": "Motorized boats are <b>not</b> allowed"
}
},
"question": "Are motorboats allowed on this waterway?"
},
"name": {
"question": "What is the name of this waterway?",
"render": "This waterway is named {name}"
},
"type": {
"mappings": {
"0": {
"then": "This is a river"
},
"1": {
"then": "This is a canal"
},
"2": {
"then": "This is a stream "
}
},
"question": "What type of waterway is this?"
}
},
"title": "{name}"
},
"waterway_lock": {
"description": "Locks on canals, rivers and other navigable waterways ",
"name": "Locks",
"pointRendering": {
"0": {
"label": {
"mappings": {
"0": {
"then": "{lock_name} (VHF {vhf})"
},
"1": {
"then": "{lock_name}"
}
}
}
}
},
"tagRenderings": {
"automated": {
"mappings": {
"0": {
"then": "This lock is automated (operated from control panel or control room)"
},
"1": {
"then": "This lock is manually operated (with muscle power)"
}
},
"question": "Is this lock automated?"
},
"lock_height_difference": {
"question": "How far does this lock raise or lower a boat?",
"questionHint": "Omit units if designated in meters. Feet and inches maybe indicated with apostrophes and quotation marks.",
"render": "This lock has a drop height of {lock:height}"
},
"lock_name": {
"question": "What is the name of this lock?",
"questionHint": "The numerical reference code can be added in a follow-up question ",
"render": "This lock is named {lock_name}"
},
"lock_waterway_name": {
"question": "What is the name of the waterway that this lock is on?",
"render": "The waterway is name <b>{name}</b>"
},
"max_depth": {
"question": "What is the maximum draft of boats using this lock?",
"questionHint": "Omit units if designated in meters. Feet and inches maybe indicated with apostrophes and quotation marks.",
"render": "The maximum draft of boats using this lock is {draft}."
},
"max_width": {
"question": "What is the maximum width (beam) of boats using this lock?",
"questionHint": "Omit units if designated in meters. Feet and inches maybe indicated with apostrophes and quotation marks.",
"render": "This lock permits boats with a maximum width of {maxwidth}"
},
"maxlength": {
"question": "What is the maximum length of boats that may use this lock?",
"questionHint": "Omit units if designated in meters. Feet and inches maybe indicated with apostrophes and quotation marks.",
"render": "Boats with a maximum length of {maxlength} may use this lock."
},
"ref": {
"question": "Does this lock have a reference number/code?",
"render": "This is lock {lock_ref}"
},
"vhf": {
"question": "What VHF channel should be used to communicate with the control room of this lock?",
"render": "The VHF channel is {vhf}"
},
"website": {
"override": {
"question": "On what website can one find more information about this lock?"
}
}
},
"title": {
"render": "{lock_name} Lock {lock_ref} (on {name})"
}
},
"windturbine": {
"description": "Modern windmills generating electricity",
"name": "wind turbine",

View file

@ -9867,6 +9867,13 @@
"render": "Afvalbak"
}
},
"waterway_lock": {
"tagRenderings": {
"max_depth": {
"question": "Wat is de maximale toegestane diepgang in deze sluis?"
}
}
},
"windturbine": {
"description": "Windturbines (moderne windmolens die elektriciteit genereren)",
"name": "windturbine",

View file

@ -894,6 +894,10 @@
"description": "Memorials are physical objects permantently placed in the public space to remember a person or event. They can be a wide range of objects, such as statues, plaques, paintings, military objects (such as tanks), ...",
"title": "Memorials"
},
"narrowboat": {
"description": "Features of interest to narrowboats and similar cruisers on inland waterways. ",
"title": "Narrowboat Amenities"
},
"nature": {
"description": "On this map, one can find interesting information for tourists and nature lovers.",
"shortDescription": "A map for nature lovers, with interesting POI's",

View file

@ -181,7 +181,7 @@ export default class DetermineLayout {
// We got fed a layer instead of a theme
const layerConfig = <LayerConfigJson>json
let icon = Utils.NoNull(
layerConfig.pointRendering
(layerConfig.pointRendering ?? [])
.flatMap((pr) => pr.marker)
.map((iconSpec) => {
if (!iconSpec) {

View file

@ -6,7 +6,7 @@ import { Utils } from "../../Utils"
* UIEventsource-wrapper around indexedDB key-value
*/
export class IdbLocalStorage {
private static readonly _sourceCache: Record<string, UIEventSource<any>> = {}
private static readonly _sourceCache: Record<string, UIEventSource<object>> = {}
public static Get<T>(
key: string,
@ -38,11 +38,11 @@ export class IdbLocalStorage {
return src
}
public static SetDirectly(key: string, value: any): Promise<void> {
public static SetDirectly(key: string, value: object): Promise<void> {
return idb.set(key, value)
}
static GetDirectly(key: string): Promise<any> {
static GetDirectly(key: string): Promise<object> {
return idb.get(key)
}

View file

@ -86,7 +86,7 @@ export class MiscTagRenderingChecks extends DesugaringStep<TagRenderingConfigJso
if (json["question"] && json.freeform?.key === undefined && json.mappings === undefined) {
context.err(
"A question is defined, but no mappings nor freeform (key) are. Add at least one of them"
"A question is defined, but no mappings nor freeform (key) are. Add at least one of them. The question is: "+new Translation(json["question"]).textFor("en")
)
}
if (json["question"] && !json.freeform && (json.mappings?.length ?? 0) == 1) {

View file

@ -596,6 +596,11 @@ class DetectInline extends DesugaringStep<QuestionableTagRenderingConfigJson> {
return json
}
if(!json.render){
context.err("'freeform' is set, but render is not")
return json
}
if(!Object.values(json.render).some(render => render !== "{"+json.freeform.key+"}")){
// We only render the current value, without anything more. Not worth inlining
return json