First version of boating theme

This commit is contained in:
Pieter Vander Vennet 2024-10-02 01:14:37 +02:00
parent caae4e4dc1
commit dbe75e004c
20 changed files with 533 additions and 15 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"
]
}
]

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,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,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": "marinas",
"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,86 @@
{
"credits": "Pieter Vander Vennet",
"minzoom": 15,
"pointRendering": [
{
"location": [
"point",
"centroid"
],
"marker": [
{
"icon": "circle",
"color": "white"
}
]
}
],
"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

@ -1,2 +1,2 @@
SPDX-FileCopyrightText: Pieter Vander Vennet SPDX-FileCopyrightText: Pieter Vander Vennet
SPDX-License-Identifier: CC0 SPDX-License-Identifier: CC0-1.0

View file

@ -26,7 +26,6 @@
"pointRendering": null, "pointRendering": null,
"lineRendering": [ "lineRendering": [
{ {
"color": "blue",
"width": { "width": {
"mappings": [ "mappings": [
{ {
@ -42,6 +41,23 @@
"then": "6" "then": "6"
} }
] ]
},
"color": {
"render": "blue",
"mappings": [
{
"if": "boat=no",
"then": "red"
},
{
"if": "motorboat=yes",
"then": "#00ff00"
},
{
"if": "boat=yes",
"then": "#00cc00"
}
]
} }
} }
], ],
@ -73,7 +89,56 @@
} }
} }
] ]
},
{
"question": {
"en": "Are boats allowed on this waterway?"
},
"id": "3_vyksl7ofya7m97l",
"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": "4_yuodfwdyocflwg8",
"mappings": [
{
"if": "motorboat=yes",
"then": {
"en": "Motorized boats are allowed"
}
},
{
"if": "motorboat=no",
"then": {
"en": "Motorized boats are <b>not</b> allowed"
}
}
]
} }
], ],
"allowMove": false "allowMove": false,
"credits": "Pieter Vander Vennet",
"credits:uid": 3818858
} }

View file

@ -128,17 +128,21 @@
"then": { "then": {
"en": "This lock is automated (operated from control panel or control room)" "en": "This lock is automated (operated from control panel or control room)"
}, },
"ifnot": "automated=" "addExtraTags": [
"manual=no"
]
}, },
{ {
"if": "manual=yes", "if": "manual=yes",
"then": { "then": {
"en": "This lock is manually operated (with muscle power)" "en": "This lock is manually operated (with muscle power)"
}, },
"ifnot": "manual=" "addExtraTags": [
"automated=no"
]
} }
], ],
"multiAnswer": true, "multiAnswer": false,
"condition": "waterway!=derelict_canal" "condition": "waterway!=derelict_canal"
}, },
{ {
@ -189,7 +193,7 @@
}, },
{ {
"question": { "question": {
"en": "What VHF channel should be used to communicate with this lock?" "en": "What VHF channel should be used to communicate with the control room of this lock?"
}, },
"id": "vhf", "id": "vhf",
"render": { "render": {
@ -197,6 +201,12 @@
}, },
"freeform": { "freeform": {
"key": "vhf" "key": "vhf"
},
"condition": {
"or": [
"automated=yes",
"automated="
]
} }
}, },
"opening_hours_24_7", "opening_hours_24_7",

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

@ -6,7 +6,7 @@
"description": { "description": {
"en": "Features of interest to narrowboats and similar cruisers on inland waterways. " "en": "Features of interest to narrowboats and similar cruisers on inland waterways. "
}, },
"icon": "./assets/layers/waterway_lock/waterway_lock.svg", "icon": "./assets/themes/narrowboat/boat.svg",
"startZoom": 5, "startZoom": 5,
"startLat": 54.44, "startLat": 54.44,
"startLon": -5.23, "startLon": -5.23,
@ -14,6 +14,9 @@
"waterway_lock", "waterway_lock",
"waterway", "waterway",
"lock_outline", "lock_outline",
"marinas",
"chandler",
"piers_and_quays",
{ {
"builtin": [ "builtin": [
"drinking_water", "drinking_water",
@ -26,12 +29,9 @@
} }
], ],
"#layers": [ "#layers": [
"https://studio.mapcomplete.org/89098/layers/waterway_locks/waterway_locks.json",
"https://studio.mapcomplete.org/89098/layers/waterway_sanitary_dump_station/waterway_sanitary_dump_station.json", "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/fuel_dock/fuel_dock.json",
"https://studio.mapcomplete.org/89098/layers/water_point/water_point.json", "https://studio.mapcomplete.org/89098/layers/water_point/water_point.json",
"https://studio.mapcomplete.org/89098/layers/winding_holes/winding_holes.json", "https://studio.mapcomplete.org/89098/layers/winding_holes/winding_holes.json"
"https://studio.mapcomplete.org/89098/layers/marinas/marinas.json",
"https://studio.mapcomplete.org/89098/layers/chandler/chandler.json"
] ]
} }

View file

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