From 9c321c901c1feafa63a1bcabfd2280f4bea82949 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Mon, 5 Jul 2021 16:52:52 +0200
Subject: [PATCH 01/71] Version bump
---
Models/Constants.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Models/Constants.ts b/Models/Constants.ts
index ab65926b17..13afd3dab5 100644
--- a/Models/Constants.ts
+++ b/Models/Constants.ts
@@ -2,7 +2,7 @@ import { Utils } from "../Utils";
export default class Constants {
- public static vNumber = "0.8.3-rc2";
+ public static vNumber = "0.8.3/bike-infra";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {
From 43980a2a78257363ec5395a5036bc50d1b63a52f Mon Sep 17 00:00:00 2001
From: Arno Deceuninck
Date: Tue, 6 Jul 2021 15:05:57 +0200
Subject: [PATCH 02/71] Cycleway type colors
---
assets/svg/cycle-infra.svg | 1 +
assets/themes/cycle_infra/cycle_infra.json | 135 +++++++++++++++++++++
2 files changed, 136 insertions(+)
create mode 100644 assets/svg/cycle-infra.svg
create mode 100644 assets/themes/cycle_infra/cycle_infra.json
diff --git a/assets/svg/cycle-infra.svg b/assets/svg/cycle-infra.svg
new file mode 100644
index 0000000000..8d82097bee
--- /dev/null
+++ b/assets/svg/cycle-infra.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
new file mode 100644
index 0000000000..e0543bf9c2
--- /dev/null
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -0,0 +1,135 @@
+{
+ "id": "cycle_infra",
+ "title": {
+ "en": "Bicycle infrastructure"
+ },
+ "shortDescription": {
+ "en": "A map where you can view and edit things related to the bicycle infrastructure."
+ },
+ "description": {
+ "en": "A map where you can view and edit things related to the bicycle infrastructure made during osoc21."
+ },
+ "language": [
+ "en"
+ ],
+ "maintainer": "",
+ "icon": "./assets/svg/cycle-infra.svg",
+ "version": "0",
+ "startLat": 51,
+ "startLon": 3.75,
+ "startZoom": 11,
+ "widenFactor": 0.05,
+ "socialImage": "",
+ "layers": [
+ {
+ "id": "cycleways",
+ "name": {
+ "en": "Cycleways"
+ },
+ "minzoom": 12,
+ "source": {
+ "osmTags": {
+ "and": [
+ "highway=cycleway"
+ ]
+ }
+ },
+ "title": {
+ "render": {
+ "en": "Cycleways"
+ }
+ },
+ "description": {},
+ "tagRenderings": [],
+ "hideUnderlayingFeaturesMinPercentage": 0,
+ "icon": {
+ "render": "./assets/svg/bug.svg"
+ },
+ "width": {
+ "render": "8"
+ },
+ "iconSize": {
+ "render": "40,40,center"
+ },
+ "color": {
+ "render": "#0f0"
+ },
+ "presets": []
+ },
+ {
+ "id": "shared_lanes",
+ "name": {
+ "en": "Shared lanes"
+ },
+ "minzoom": 12,
+ "source": {
+ "osmTags": {
+ "and": [
+ "cycleway=shared_lane"
+ ]
+ }
+ },
+ "title": {
+ "render": {
+ "en": "Shared Lane"
+ }
+ },
+ "description": {
+ "en": "Cyclepaths where you have to share your lane with other cyclists."
+ },
+ "tagRenderings": [],
+ "hideUnderlayingFeaturesMinPercentage": 0,
+ "icon": {
+ "render": "./assets/svg/bug.svg"
+ },
+ "width": {
+ "render": "8"
+ },
+ "iconSize": {
+ "render": "40,40,center"
+ },
+ "color": {
+ "render": "#f00"
+ },
+ "presets": []
+ },
+ {
+ "id": "lanes",
+ "name": {
+ "en": "Lanes"
+ },
+ "minzoom": 12,
+ "source": {
+ "osmTags": {
+ "and": [
+ "cycleway=lane"
+ ]
+ }
+ },
+ "title": {
+ "render": {
+ "en": "Cycleway next to road"
+ }
+ },
+ "description": {
+ "en": "Cycleways immediately next to the road."
+ },
+ "tagRenderings": [],
+ "hideUnderlayingFeaturesMinPercentage": 0,
+ "icon": {
+ "render": "./assets/svg/bug.svg"
+ },
+ "width": {
+ "render": "8"
+ },
+ "iconSize": {
+ "render": "40,40,center"
+ },
+ "color": {
+ "render": "#f90"
+ },
+ "presets": []
+ }
+ ],
+ "roamingRenderings": []
+}
\ No newline at end of file
From 3da3e25980f2098837b8a3d10d1adbb198b4ac85 Mon Sep 17 00:00:00 2001
From: Arno Deceuninck
Date: Tue, 6 Jul 2021 15:57:02 +0200
Subject: [PATCH 03/71] Surface type basic questions
---
assets/themes/cycle_infra/cycle_infra.json | 49 +++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index e0543bf9c2..b0df29dc83 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -131,5 +131,52 @@
"presets": []
}
],
- "roamingRenderings": []
+ "overrideAll": {
+ "+tagRenderings": [
+ {
+ "render": {
+ "en": "This road is made of {surface}"
+ },
+ "freeform": {
+ "key": "surface",
+ "addExtraTags": []
+ },
+ "mappings": [
+ {
+ "if": "surface=wood",
+ "then": {
+ "en": "The street is made of wood"
+ }
+ },
+ {
+ "if": "surface=concrete",
+ "then": {
+ "en": "This street is made of concrete"
+ }
+ },
+ {
+ "if": "surface=cobblestone",
+ "then": {
+ "en": "This street is made of concrete"
+ }
+ },
+ {
+ "if": "surface=asphalt",
+ "then": {
+ "en": "This street is made of asphalt"
+ }
+ },
+ {
+ "if": "surface=paved",
+ "then": {
+ "en": "This street is paved"
+ }
+ }
+ ],
+ "question": {
+ "en": "What is the surface of the street made from?"
+ }
+ }
+ ]
+ }
}
\ No newline at end of file
From 199dfaf904e30e8df8db1936466f206f364f83cf Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Tue, 6 Jul 2021 16:17:36 +0200
Subject: [PATCH 04/71] Adds maxspeed questions to shared lanes and lanes
---
.../public_bookcase/public_bookcase.json | 10 +-
assets/themes/cycle_infra/cycle_infra.json | 94 ++++++-
package-lock.json | 230 +++++++++++++++++-
3 files changed, 317 insertions(+), 17 deletions(-)
diff --git a/assets/layers/public_bookcase/public_bookcase.json b/assets/layers/public_bookcase/public_bookcase.json
index d6462e1b42..896f97cea3 100644
--- a/assets/layers/public_bookcase/public_bookcase.json
+++ b/assets/layers/public_bookcase/public_bookcase.json
@@ -410,10 +410,12 @@
}
],
"deletion": {
- "softDeletionTags": {"and":[
- "disused:amenity=public_bookcase",
- "amenity="
- ]},
+ "softDeletionTags": {
+ "and": [
+ "disused:amenity=public_bookcase",
+ "amenity="
+ ]
+ },
"neededChangesets": 5
}
}
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index b0df29dc83..920d148f11 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -77,7 +77,52 @@
"description": {
"en": "Cyclepaths where you have to share your lane with other cyclists."
},
- "tagRenderings": [],
+ "tagRenderings": [
+ {
+ "render": {
+ "en": "The maximum speed on this road is {speed}"
+ },
+ "freeform": {
+ "key": "maxspeed",
+ "addExtraTags": []
+ },
+ "mappings": [
+ {
+ "if": "maxspeed=20",
+ "then": {
+ "en": "The maximum speed is 20 km/h"
+ }
+ },
+ {
+ "if": "maxspeed=30",
+ "then": {
+ "en": "The maximum speed is 30 km/h"
+ }
+ },
+ {
+ "if": "maxspeed=50",
+ "then": {
+ "en": "The maximum speed is 50 km/h"
+ }
+ },
+ {
+ "if": "maxspeed=70",
+ "then": {
+ "en": "The maximum speed is 70 km/h"
+ }
+ },
+ {
+ "if": "maxspeed=90",
+ "then": {
+ "en": "The maximum speed is 90 km/h"
+ }
+ }
+ ],
+ "question": {
+ "en": "What is the maximum speed in this street?"
+ }
+ }
+ ],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/svg/bug.svg"
@@ -114,7 +159,52 @@
"description": {
"en": "Cycleways immediately next to the road."
},
- "tagRenderings": [],
+ "tagRenderings": [
+ {
+ "render": {
+ "en": "The maximum speed on this road is {speed}"
+ },
+ "freeform": {
+ "key": "maxspeed",
+ "addExtraTags": []
+ },
+ "mappings": [
+ {
+ "if": "maxspeed=20",
+ "then": {
+ "en": "The maximum speed is 20 km/h"
+ }
+ },
+ {
+ "if": "maxspeed=30",
+ "then": {
+ "en": "The maximum speed is 30 km/h"
+ }
+ },
+ {
+ "if": "maxspeed=50",
+ "then": {
+ "en": "The maximum speed is 50 km/h"
+ }
+ },
+ {
+ "if": "maxspeed=70",
+ "then": {
+ "en": "The maximum speed is 70 km/h"
+ }
+ },
+ {
+ "if": "maxspeed=90",
+ "then": {
+ "en": "The maximum speed is 90 km/h"
+ }
+ }
+ ],
+ "question": {
+ "en": "What is the maximum speed in this street?"
+ }
+ }
+ ],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/svg/bug.svg"
diff --git a/package-lock.json b/package-lock.json
index cb3d63083b..e8af8e0106 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2714,6 +2714,11 @@
"integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==",
"dev": true
},
+ "@types/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
+ },
"@types/prompt-sync": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/@types/prompt-sync/-/prompt-sync-4.1.0.tgz",
@@ -5728,6 +5733,14 @@
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
},
+ "import-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz",
+ "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==",
+ "requires": {
+ "import-from": "^3.0.0"
+ }
+ },
"import-fresh": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
@@ -5737,6 +5750,21 @@
"resolve-from": "^3.0.0"
}
},
+ "import-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz",
+ "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==",
+ "requires": {
+ "resolve-from": "^5.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
+ }
+ }
+ },
"incremental-convex-hull": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/incremental-convex-hull/-/incremental-convex-hull-1.0.1.tgz",
@@ -6232,6 +6260,11 @@
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
},
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ },
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
@@ -7905,11 +7938,21 @@
"resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.17.tgz",
"integrity": "sha512-ElJki901OynMg1l+evooPH1VyHrECuLqpgc12z2BkK25dFU5lUKTuMHEYV2jXxvtns/PIuJax56cBeoSK7ANow=="
},
+ "lilconfig": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz",
+ "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg=="
+ },
"lineclip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/lineclip/-/lineclip-1.1.5.tgz",
"integrity": "sha1-K/JgZ9lDVP6r+R5CdoI221YW/RM="
},
+ "lines-and-columns": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA="
+ },
"load-json-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
@@ -9010,6 +9053,21 @@
}
}
},
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "requires": {
+ "callsites": "^3.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
+ }
+ }
+ },
"parse-asn1": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
@@ -9333,6 +9391,16 @@
"postcss": "^7.0.18"
}
},
+ "postcss-load-config": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz",
+ "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==",
+ "requires": {
+ "import-cwd": "^3.0.0",
+ "lilconfig": "^2.0.3",
+ "yaml": "^1.10.2"
+ }
+ },
"postcss-merge-longhand": {
"version": "4.0.11",
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
@@ -11226,39 +11294,44 @@
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
},
"tailwindcss": {
- "version": "npm:@tailwindcss/postcss7-compat@2.1.2",
- "resolved": "https://registry.npmjs.org/@tailwindcss/postcss7-compat/-/postcss7-compat-2.1.2.tgz",
- "integrity": "sha512-bH2kw6uyqLnDMP8wzDUsis5ovrsRzfHEyiL1McADvqlW54g6y0KVHX1xzO7PH8Fl5s0Sq8vDOAp4+3V8MEcZ9g==",
+ "version": "npm:@tailwindcss/postcss7-compat@2.2.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/postcss7-compat/-/postcss7-compat-2.2.4.tgz",
+ "integrity": "sha512-lFIBdD1D2w3RgHFg7kNB7U5LOlfbd+KXTzcLyC/RlQ9eVko6GjNCKpN/kdmfF9wiGxbSDT/3mousXeMZdOOuBg==",
"requires": {
"@fullhuman/postcss-purgecss": "^3.1.3",
+ "arg": "^5.0.0",
"autoprefixer": "^9",
"bytes": "^3.0.0",
- "chalk": "^4.1.0",
- "chokidar": "^3.5.1",
+ "chalk": "^4.1.1",
+ "chokidar": "^3.5.2",
"color": "^3.1.3",
+ "cosmiconfig": "^7.0.0",
"detective": "^5.2.0",
"didyoumean": "^1.2.1",
"dlv": "^1.1.3",
"fast-glob": "^3.2.5",
- "fs-extra": "^9.1.0",
+ "fs-extra": "^10.0.0",
+ "glob-parent": "^6.0.0",
"html-tags": "^3.1.0",
+ "is-glob": "^4.0.1",
"lodash": "^4.17.21",
"lodash.topath": "^4.5.2",
- "modern-normalize": "^1.0.0",
+ "modern-normalize": "^1.1.0",
"node-emoji": "^1.8.1",
"normalize-path": "^3.0.0",
- "object-hash": "^2.1.1",
- "parse-glob": "^3.0.4",
+ "object-hash": "^2.2.0",
"postcss": "^7",
"postcss-functions": "^3",
"postcss-js": "^2",
+ "postcss-load-config": "^3.1.0",
"postcss-nested": "^4",
- "postcss-selector-parser": "^6.0.4",
+ "postcss-selector-parser": "^6.0.6",
"postcss-value-parser": "^4.1.0",
"pretty-hrtime": "^1.0.3",
"quick-lru": "^5.1.1",
"reduce-css-calc": "^2.1.8",
- "resolve": "^1.20.0"
+ "resolve": "^1.20.0",
+ "tmp": "^0.2.1"
},
"dependencies": {
"ansi-styles": {
@@ -11269,6 +11342,11 @@
"color-convert": "^2.0.1"
}
},
+ "arg": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.0.tgz",
+ "integrity": "sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ=="
+ },
"chalk": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
@@ -11278,6 +11356,31 @@
"supports-color": "^7.1.0"
}
},
+ "chokidar": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
+ "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ }
+ }
+ },
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -11291,11 +11394,93 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
+ "cosmiconfig": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
+ "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
+ "requires": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ }
+ },
+ "fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz",
+ "integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "object-hash": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
+ "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw=="
+ },
+ "parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz",
+ "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
+ },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -11409,6 +11594,24 @@
"resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz",
"integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA=="
},
+ "tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "requires": {
+ "rimraf": "^3.0.0"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
"to-arraybuffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
@@ -12574,6 +12777,11 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
+ "yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
+ },
"yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
From f51f2598e5a88969a54f7cf22ac00f378aa687a5 Mon Sep 17 00:00:00 2001
From: Arno Deceuninck
Date: Tue, 6 Jul 2021 16:24:35 +0200
Subject: [PATCH 05/71] Updated dutch translations
---
assets/themes/cycle_infra/cycle_infra.json | 77 ++++++++++++++--------
1 file changed, 51 insertions(+), 26 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 920d148f11..aaf8d65994 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -1,16 +1,19 @@
{
"id": "cycle_infra",
"title": {
- "en": "Bicycle infrastructure"
+ "en": "Bicycle infrastructure",
+ "nl": "Fietsinfrastructuur"
},
"shortDescription": {
- "en": "A map where you can view and edit things related to the bicycle infrastructure."
+ "en": "A map where you can view and edit things related to the bicycle infrastructure.",
+ "nl": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken."
},
"description": {
- "en": "A map where you can view and edit things related to the bicycle infrastructure made during osoc21."
+ "en": "A map where you can view and edit things related to the bicycle infrastructure made during osoc21.",
+ "nl": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken gemaakt tijdens osoc21."
},
"language": [
- "en"
+ "en", "nl"
],
"maintainer": "",
"icon": "./assets/svg/cycle-infra.svg",
@@ -24,7 +27,8 @@
{
"id": "cycleways",
"name": {
- "en": "Cycleways"
+ "en": "Cycleways",
+ "nl": "Fietspaden"
},
"minzoom": 12,
"source": {
@@ -36,7 +40,8 @@
},
"title": {
"render": {
- "en": "Cycleways"
+ "en": "Cycleways",
+ "nl": "Fietspaden"
}
},
"description": {},
@@ -59,7 +64,8 @@
{
"id": "shared_lanes",
"name": {
- "en": "Shared lanes"
+ "en": "Shared lanes",
+ "nl": "Gedeelde straten"
},
"minzoom": 12,
"source": {
@@ -71,11 +77,13 @@
},
"title": {
"render": {
- "en": "Shared Lane"
+ "en": "Shared Lane",
+ "nl": "Gedeelde straat"
}
},
"description": {
- "en": "Cyclepaths where you have to share your lane with other cyclists."
+ "en": "Cyclepaths where you have to share your lane with other cyclists.",
+ "nl": "Fietspaden waar fietsers de weg moeten delen met andere weggebruikers."
},
"tagRenderings": [
{
@@ -141,7 +149,8 @@
{
"id": "lanes",
"name": {
- "en": "Lanes"
+ "en": "Lanes",
+ "nl": "Fietsstroken naast de weg"
},
"minzoom": 12,
"source": {
@@ -153,16 +162,19 @@
},
"title": {
"render": {
- "en": "Cycleway next to road"
+ "en": "Cycleway next to road",
+ "nl": "Fietsstrook naast de weg"
}
},
"description": {
- "en": "Cycleways immediately next to the road."
+ "en": "Cycleways immediately next to the road.",
+ "nl": "Fietspaden direct naast de weg."
},
"tagRenderings": [
{
"render": {
- "en": "The maximum speed on this road is {speed}"
+ "en": "The maximum speed on this road is {speed} km/h",
+ "nl": "De maximumsnelheid op deze weg is {speed} km/u"
},
"freeform": {
"key": "maxspeed",
@@ -172,36 +184,42 @@
{
"if": "maxspeed=20",
"then": {
- "en": "The maximum speed is 20 km/h"
+ "en": "The maximum speed is 20 km/h",
+ "nl": "De maximumsnelheid is 20 km/u"
}
},
{
"if": "maxspeed=30",
"then": {
- "en": "The maximum speed is 30 km/h"
+ "en": "The maximum speed is 30 km/h",
+ "nl": "De maximumsnelheid is 30 km/u"
}
},
{
"if": "maxspeed=50",
"then": {
- "en": "The maximum speed is 50 km/h"
+ "en": "The maximum speed is 50 km/h",
+ "nl": "De maximumsnelheid is 50 km/u"
}
},
{
"if": "maxspeed=70",
"then": {
- "en": "The maximum speed is 70 km/h"
+ "en": "The maximum speed is 70 km/h",
+ "nl": "De maximumsnelheid is 70 km/u"
}
},
{
"if": "maxspeed=90",
"then": {
- "en": "The maximum speed is 90 km/h"
+ "en": "The maximum speed is 90 km/h",
+ "nl": "De maximumsnelheid is 90 km/u"
}
}
],
"question": {
- "en": "What is the maximum speed in this street?"
+ "en": "What is the maximum speed in this street?",
+ "nl": "Wat is de maximumsnelheid in deze straat?"
}
}
],
@@ -225,7 +243,8 @@
"+tagRenderings": [
{
"render": {
- "en": "This road is made of {surface}"
+ "en": "This road is made of {surface}",
+ "nl": "Deze weg is gemaakt van {surface}"
},
"freeform": {
"key": "surface",
@@ -235,36 +254,42 @@
{
"if": "surface=wood",
"then": {
- "en": "The street is made of wood"
+ "en": "This street is made of wood",
+ "nl": "Deze weg is gemaakt van hout"
}
},
{
"if": "surface=concrete",
"then": {
- "en": "This street is made of concrete"
+ "en": "This street is made of concrete",
+ "nl": "Deze straat is gemaakt van beton"
}
},
{
"if": "surface=cobblestone",
"then": {
- "en": "This street is made of concrete"
+ "en": "This street is made of cobblestone",
+ "nl": "Deze straat is gemaakt van kasseien"
}
},
{
"if": "surface=asphalt",
"then": {
- "en": "This street is made of asphalt"
+ "en": "This street is made of asphalt",
+ "nl": "Deze straat is gemaakt van asfalt"
}
},
{
"if": "surface=paved",
"then": {
- "en": "This street is paved"
+ "en": "This street is paved",
+ "nl": "Deze straat is geplaveid"
}
}
],
"question": {
- "en": "What is the surface of the street made from?"
+ "en": "What is the surface of the street made from?",
+ "nl": "Waaruit is het oppervlak van de straat gemaakt?"
}
}
]
From c79c6f85f438a3aaa5dae133e08c2c3c87e62408 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Tue, 6 Jul 2021 16:45:17 +0200
Subject: [PATCH 06/71] Basic cyclestreet
---
assets/themes/cycle_infra/cycle_infra.json | 40 ++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index aaf8d65994..4931b263d5 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -237,6 +237,46 @@
"render": "#f90"
},
"presets": []
+ },
+ {
+ "id": "cyclestreets",
+ "name": {
+ "en": "Cyclestreets",
+ "nl": "Fietsstraten"
+ },
+ "minzoom": 12,
+ "source": {
+ "osmTags": {
+ "and": [
+ "cyclestreet=yes"
+ ]
+ }
+ },
+ "title": {
+ "render": {
+ "en": "Dedicated cyclestreet",
+ "nl": "Fietsstraten"
+ }
+ },
+ "description": {
+ "en": "Bicycles have priority and overtaking isn't allowed, the maximum speed is 30 km/h",
+ "nl": "Fietsen hebben prioriteit en inhalen is niet toegestaan, de maximumsnelheid is 30 km/h"
+ },
+ "tagRenderings": [],
+ "hideUnderlayingFeaturesMinPercentage": 0,
+ "icon": {
+ "render": "./assets/svg/bug.svg"
+ },
+ "width": {
+ "render": "8"
+ },
+ "iconSize": {
+ "render": "40,40,center"
+ },
+ "color": {
+ "render": "#00f"
+ },
+ "presets": []
}
],
"overrideAll": {
From 179e06cec62466c83688dcc5ec68b860cccad703 Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Wed, 7 Jul 2021 09:51:06 +0200
Subject: [PATCH 07/71] Fixes keys for maxspeed
---
assets/themes/cycle_infra/cycle_infra.json | 25 ++++++++++++++--------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 4931b263d5..8c2b58b972 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -88,7 +88,8 @@
"tagRenderings": [
{
"render": {
- "en": "The maximum speed on this road is {speed}"
+ "en": "The maximum speed on this road is {maxspeed} km/h",
+ "nl": "De maximumsnelheid op deze weg is {maxspeed} km/u"
},
"freeform": {
"key": "maxspeed",
@@ -98,36 +99,42 @@
{
"if": "maxspeed=20",
"then": {
- "en": "The maximum speed is 20 km/h"
+ "en": "The maximum speed is 20 km/h",
+ "nl": "De maximumsnelheid is 20 km/u"
}
},
{
"if": "maxspeed=30",
"then": {
- "en": "The maximum speed is 30 km/h"
+ "en": "The maximum speed is 30 km/h",
+ "nl": "De maximumsnelheid is 30 km/u"
}
},
{
"if": "maxspeed=50",
"then": {
- "en": "The maximum speed is 50 km/h"
+ "en": "The maximum speed is 50 km/h",
+ "nl": "De maximumsnelheid is 50 km/u"
}
},
{
"if": "maxspeed=70",
"then": {
- "en": "The maximum speed is 70 km/h"
+ "en": "The maximum speed is 70 km/h",
+ "nl": "De maximumsnelheid is 70 km/u"
}
},
{
"if": "maxspeed=90",
"then": {
- "en": "The maximum speed is 90 km/h"
+ "en": "The maximum speed is 90 km/h",
+ "nl": "De maximumsnelheid is 90 km/u"
}
}
],
"question": {
- "en": "What is the maximum speed in this street?"
+ "en": "What is the maximum speed in this street?",
+ "nl": "Wat is de maximumsnelheid in deze straat?"
}
}
],
@@ -173,8 +180,8 @@
"tagRenderings": [
{
"render": {
- "en": "The maximum speed on this road is {speed} km/h",
- "nl": "De maximumsnelheid op deze weg is {speed} km/u"
+ "en": "The maximum speed on this road is {maxspeed} km/h",
+ "nl": "De maximumsnelheid op deze weg is {maxspeed} km/u"
},
"freeform": {
"key": "maxspeed",
From 247380ca332e075c47bf8a726dba418dd6813a38 Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Wed, 7 Jul 2021 15:54:26 +0200
Subject: [PATCH 08/71] Generate question for carriagewidth | Needs to be moved
---
assets/themes/cycle_infra/cycle_infra.json | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 8c2b58b972..1e5ca91e0f 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -338,6 +338,20 @@
"en": "What is the surface of the street made from?",
"nl": "Waaruit is het oppervlak van de straat gemaakt?"
}
+ },
+ {
+ "render": {
+ "en": "The carriage width of this road is {width:carriageway}m",
+ "nl": "De breedte van deze rijbaan in deze straat is {width:carriageway}m"
+ },
+ "freeform": {
+ "key": "width:carriageway",
+ "addExtraTags": []
+ },
+ "question": {
+ "en": "What is the carriage width of this road (in meters)?",
+ "nl": "Hoe breed is de rijbaan in deze straat (in meters)?"
+ }
}
]
}
From fd3b9f5c6e53ae40ec07459aee469467e6278eb5 Mon Sep 17 00:00:00 2001
From: Arno Deceuninck
Date: Wed, 7 Jul 2021 16:21:08 +0200
Subject: [PATCH 09/71] Cycleway type questions
---
assets/themes/cycle_infra/cycle_infra.json | 96 ++++++++++++++++++++++
1 file changed, 96 insertions(+)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index aaf8d65994..83508be476 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -237,10 +237,106 @@
"render": "#f90"
},
"presets": []
+ },
+ {
+ "id": "all_streets",
+ "name": {
+ "nl": "Alle straten",
+ "en": "All streets"
+ },
+ "description": {
+ "nl": "Laag waar je nieuwe fietspaden kan aanduiden",
+ "en": "Layer to mark new cycleways"
+ },
+ "source": {
+ "osmTags": {
+ "or": [
+ "highway=residential",
+ "highway=tertiary",
+ "highway=unclassified",
+ "highway=primary",
+ "highway=secondary"
+ ]
+ }
+ },
+ "minzoom": 18,
+ "wayHandling": 0,
+ "title": {
+ "render": {
+ "nl": "Straat",
+ "en": "Street"
+ },
+ "mappings": [
+ {
+ "if": "name~*",
+ "then": "{name}"
+ }
+ ]
+ },
+ "icon": "./assets/svg/bug.svg",
+ "width": "5",
+ "color": {
+ "render": "#aaaaaa",
+ "mappings": []
+ },
+ "tagRenderings": []
}
],
"overrideAll": {
"+tagRenderings": [
+ {
+ "freeform": {
+ "key": "cycleway",
+ "addExtraTags": []
+ },
+ "question": {
+ "en": "Is there a cycleway?",
+ "nl": "Is er een fietspad?"
+ },
+ "condition": "highway!=cycleway",
+ "mappings": [
+ {
+ "if": "cycleway=",
+ "then": {
+ "en": "There is no cycleway",
+ "nl": "Er is geen fietspad"
+ },
+ "hideInAnswer": true
+ },
+ {
+ "if": "cycleway=shared_lane",
+ "then": {
+ "en": "There is a shared lane",
+ "nl": "Er is een fietssugestiestrook"
+ }
+ },
+ {
+ "if": "cycleway=lane",
+ "then": {
+ "en": "There is a lane next to the road (seperated with paint)",
+ "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)"
+ }
+ },
+ {
+ "if": "cycleway=track",
+ "then": {
+ "en": "There is a track, but no cycleway drawn seperately from this road on the map.",
+ "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg."
+ }
+ },
+ {
+ "if": "cycleway=seperate",
+ "then": {
+ "en": "There is a seperately drawn cycleway",
+ "nl": "Er is een apart getekend fietspad."
+ }
+ }
+ ],
+ "render": {
+ "en": "Unknown cycleway situation",
+ "nl": "Onbekende fietspad situatie"
+ }
+ },
{
"render": {
"en": "This road is made of {surface}",
From e23f22553204a2341b2615d06fb86df4c8bad8cc Mon Sep 17 00:00:00 2001
From: Arno Deceuninck
Date: Wed, 7 Jul 2021 16:27:35 +0200
Subject: [PATCH 10/71] Fix cyclestreets dissapeared after merge conflict
---
assets/themes/cycle_infra/cycle_infra.json | 80 +++++++++++-----------
1 file changed, 40 insertions(+), 40 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index fa71ef5f9a..3a32558191 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -245,6 +245,46 @@
},
"presets": []
},
+ {
+ "id": "cyclestreets",
+ "name": {
+ "en": "Cyclestreets",
+ "nl": "Fietsstraten"
+ },
+ "minzoom": 12,
+ "source": {
+ "osmTags": {
+ "and": [
+ "cyclestreet=yes"
+ ]
+ }
+ },
+ "title": {
+ "render": {
+ "en": "Dedicated cyclestreet",
+ "nl": "Fietsstraten"
+ }
+ },
+ "description": {
+ "en": "Bicycles have priority and overtaking isn't allowed, the maximum speed is 30 km/h",
+ "nl": "Fietsen hebben prioriteit en inhalen is niet toegestaan, de maximumsnelheid is 30 km/h"
+ },
+ "tagRenderings": [],
+ "hideUnderlayingFeaturesMinPercentage": 0,
+ "icon": {
+ "render": "./assets/svg/bug.svg"
+ },
+ "width": {
+ "render": "8"
+ },
+ "iconSize": {
+ "render": "40,40,center"
+ },
+ "color": {
+ "render": "#00f"
+ },
+ "presets": []
+ },
{
"id": "all_streets",
"name": {
@@ -287,46 +327,6 @@
"mappings": []
},
"tagRenderings": []
- },
- {
- "id": "cyclestreets",
- "name": {
- "en": "Cyclestreets",
- "nl": "Fietsstraten"
- },
- "minzoom": 12,
- "source": {
- "osmTags": {
- "and": [
- "cyclestreet=yes"
- ]
- }
- },
- "title": {
- "render": {
- "en": "Dedicated cyclestreet",
- "nl": "Fietsstraten"
- }
- },
- "description": {
- "en": "Bicycles have priority and overtaking isn't allowed, the maximum speed is 30 km/h",
- "nl": "Fietsen hebben prioriteit en inhalen is niet toegestaan, de maximumsnelheid is 30 km/h"
- },
- "tagRenderings": [],
- "hideUnderlayingFeaturesMinPercentage": 0,
- "icon": {
- "render": "./assets/svg/bug.svg"
- },
- "width": {
- "render": "8"
- },
- "iconSize": {
- "render": "40,40,center"
- },
- "color": {
- "render": "#00f"
- },
- "presets": []
}
],
"overrideAll": {
From ec250252d2aa058cc7c011be1353d7b179f3bf17 Mon Sep 17 00:00:00 2001
From: Arno Deceuninck
Date: Wed, 7 Jul 2021 17:20:17 +0200
Subject: [PATCH 11/71] Merged all layers related to cycle paths
---
assets/themes/cycle_infra/cycle_infra.json | 231 ++++++---------------
1 file changed, 58 insertions(+), 173 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 3a32558191..020ce5c28d 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -33,8 +33,11 @@
"minzoom": 12,
"source": {
"osmTags": {
- "and": [
- "highway=cycleway"
+ "or": [
+ "highway=cycleway",
+ "cycleway=shared_lane",
+ "cycleway=lane",
+ "cyclestreet=yes"
]
}
},
@@ -42,49 +45,39 @@
"render": {
"en": "Cycleways",
"nl": "Fietspaden"
- }
+ },
+ "mappings": [
+ {
+ "if": "highway=cycleway",
+ "then": {
+ "nl": "Fietsweg",
+ "en": "Bike road"
+ }
+ },
+ {
+ "if": "cycleway=shared_lane",
+ "then": {
+ "nl": "Fietssuggestiestrook",
+ "en": "Shared lane"
+ }
+ },
+ {
+ "if": "cycleway=lane",
+ "then": {
+ "nl": "Fietsweg naast de weg",
+ "en": "Bike lane"
+ }
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": {
+ "nl": "Fietsstraat",
+ "en": "Cyclestreet"
+ }
+ }
+ ]
},
"description": {},
- "tagRenderings": [],
- "hideUnderlayingFeaturesMinPercentage": 0,
- "icon": {
- "render": "./assets/svg/bug.svg"
- },
- "width": {
- "render": "8"
- },
- "iconSize": {
- "render": "40,40,center"
- },
- "color": {
- "render": "#0f0"
- },
- "presets": []
- },
- {
- "id": "shared_lanes",
- "name": {
- "en": "Shared lanes",
- "nl": "Gedeelde straten"
- },
- "minzoom": 12,
- "source": {
- "osmTags": {
- "and": [
- "cycleway=shared_lane"
- ]
- }
- },
- "title": {
- "render": {
- "en": "Shared Lane",
- "nl": "Gedeelde straat"
- }
- },
- "description": {
- "en": "Cyclepaths where you have to share your lane with other cyclists.",
- "nl": "Fietspaden waar fietsers de weg moeten delen met andere weggebruikers."
- },
"tagRenderings": [
{
"render": {
@@ -95,6 +88,12 @@
"key": "maxspeed",
"addExtraTags": []
},
+ "condition": {
+ "or": [
+ "cycleway=shared_lane",
+ "cycleway=lane"
+ ]
+ },
"mappings": [
{
"if": "maxspeed=20",
@@ -149,139 +148,25 @@
"render": "40,40,center"
},
"color": {
- "render": "#f00"
- },
- "presets": []
- },
- {
- "id": "lanes",
- "name": {
- "en": "Lanes",
- "nl": "Fietsstroken naast de weg"
- },
- "minzoom": 12,
- "source": {
- "osmTags": {
- "and": [
- "cycleway=lane"
- ]
- }
- },
- "title": {
- "render": {
- "en": "Cycleway next to road",
- "nl": "Fietsstrook naast de weg"
- }
- },
- "description": {
- "en": "Cycleways immediately next to the road.",
- "nl": "Fietspaden direct naast de weg."
- },
- "tagRenderings": [
- {
- "render": {
- "en": "The maximum speed on this road is {maxspeed} km/h",
- "nl": "De maximumsnelheid op deze weg is {maxspeed} km/u"
+ "render": "#aaaaaa",
+ "mappings": [
+ {
+ "if": "highway=cycleway",
+ "then": "#00ff00"
},
- "freeform": {
- "key": "maxspeed",
- "addExtraTags": []
+ {
+ "if": "cycleway=shared_lane",
+ "then": "#ff0000"
},
- "mappings": [
- {
- "if": "maxspeed=20",
- "then": {
- "en": "The maximum speed is 20 km/h",
- "nl": "De maximumsnelheid is 20 km/u"
- }
- },
- {
- "if": "maxspeed=30",
- "then": {
- "en": "The maximum speed is 30 km/h",
- "nl": "De maximumsnelheid is 30 km/u"
- }
- },
- {
- "if": "maxspeed=50",
- "then": {
- "en": "The maximum speed is 50 km/h",
- "nl": "De maximumsnelheid is 50 km/u"
- }
- },
- {
- "if": "maxspeed=70",
- "then": {
- "en": "The maximum speed is 70 km/h",
- "nl": "De maximumsnelheid is 70 km/u"
- }
- },
- {
- "if": "maxspeed=90",
- "then": {
- "en": "The maximum speed is 90 km/h",
- "nl": "De maximumsnelheid is 90 km/u"
- }
- }
- ],
- "question": {
- "en": "What is the maximum speed in this street?",
- "nl": "Wat is de maximumsnelheid in deze straat?"
+ {
+ "if": "cycleway=lane",
+ "then": "#ff9900"
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": "#0000ff"
}
- }
- ],
- "hideUnderlayingFeaturesMinPercentage": 0,
- "icon": {
- "render": "./assets/svg/bug.svg"
- },
- "width": {
- "render": "8"
- },
- "iconSize": {
- "render": "40,40,center"
- },
- "color": {
- "render": "#f90"
- },
- "presets": []
- },
- {
- "id": "cyclestreets",
- "name": {
- "en": "Cyclestreets",
- "nl": "Fietsstraten"
- },
- "minzoom": 12,
- "source": {
- "osmTags": {
- "and": [
- "cyclestreet=yes"
- ]
- }
- },
- "title": {
- "render": {
- "en": "Dedicated cyclestreet",
- "nl": "Fietsstraten"
- }
- },
- "description": {
- "en": "Bicycles have priority and overtaking isn't allowed, the maximum speed is 30 km/h",
- "nl": "Fietsen hebben prioriteit en inhalen is niet toegestaan, de maximumsnelheid is 30 km/h"
- },
- "tagRenderings": [],
- "hideUnderlayingFeaturesMinPercentage": 0,
- "icon": {
- "render": "./assets/svg/bug.svg"
- },
- "width": {
- "render": "8"
- },
- "iconSize": {
- "render": "40,40,center"
- },
- "color": {
- "render": "#00f"
+ ]
},
"presets": []
},
From b9aa1435ccd1ac429e191b695f5c2dea65b5691e Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Wed, 7 Jul 2021 19:59:56 +0200
Subject: [PATCH 12/71] Adds conditional render of carriage width question
---
assets/themes/cycle_infra/cycle_infra.json | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 020ce5c28d..63ac9aec15 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -321,13 +321,20 @@
}
},
{
+ "condition": {
+ "or": [
+ "cycleway=shared_lane",
+ "cycleway="
+ ]
+ },
"render": {
"en": "The carriage width of this road is {width:carriageway}m",
"nl": "De breedte van deze rijbaan in deze straat is {width:carriageway}m"
},
"freeform": {
"key": "width:carriageway",
- "addExtraTags": []
+ "addExtraTags": [],
+ "type": "pfloat"
},
"question": {
"en": "What is the carriage width of this road (in meters)?",
From 91b0ed7987059b728566d6ceafed101f93b976ef Mon Sep 17 00:00:00 2001
From: Arno Deceuninck
Date: Thu, 8 Jul 2021 14:31:58 +0200
Subject: [PATCH 13/71] Fix cyclestreet as "no cycleway"
---
assets/themes/cycle_infra/cycle_infra.json | 23 ++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 63ac9aec15..b051a4425a 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -227,14 +227,6 @@
},
"condition": "highway!=cycleway",
"mappings": [
- {
- "if": "cycleway=",
- "then": {
- "en": "There is no cycleway",
- "nl": "Er is geen fietspad"
- },
- "hideInAnswer": true
- },
{
"if": "cycleway=shared_lane",
"then": {
@@ -262,6 +254,21 @@
"en": "There is a seperately drawn cycleway",
"nl": "Er is een apart getekend fietspad."
}
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": {
+ "nl": "Dit is een fietsstraat.",
+ "en": "This is a cyclestreet."
+ }
+ },
+ {
+ "if": "cycleway=",
+ "then": {
+ "en": "There is no cycleway",
+ "nl": "Er is geen fietspad"
+ },
+ "hideInAnswer": true
}
],
"render": {
From 37d0c86e3d49a53edd8ba212b36b0946cbcbe409 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Mon, 12 Jul 2021 11:38:51 +0200
Subject: [PATCH 14/71] Some restructuring and adding smoothness
---
assets/themes/cycle_infra/cycle_infra.json | 356 ++++++++++++++++-----
1 file changed, 268 insertions(+), 88 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index b051a4425a..7feddf7f3b 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -12,9 +12,7 @@
"en": "A map where you can view and edit things related to the bicycle infrastructure made during osoc21.",
"nl": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken gemaakt tijdens osoc21."
},
- "language": [
- "en", "nl"
- ],
+ "language": ["en", "nl"],
"maintainer": "",
"icon": "./assets/svg/cycle-infra.svg",
"version": "0",
@@ -89,10 +87,7 @@
"addExtraTags": []
},
"condition": {
- "or": [
- "cycleway=shared_lane",
- "cycleway=lane"
- ]
+ "or": ["cycleway=shared_lane", "cycleway=lane"]
},
"mappings": [
{
@@ -135,6 +130,145 @@
"en": "What is the maximum speed in this street?",
"nl": "Wat is de maximumsnelheid in deze straat?"
}
+ },
+ {
+ "render": {
+ "en": "This cyleway is made of {cycleway:surface}",
+ "nl": "Dit fietspad is gemaakt van {cycleway:surface}"
+ },
+ "freeform": {
+ "key": "cycleway:surface",
+ "addExtraTags": []
+ },
+ "condition": {
+ "or": ["cycleway=shared_lane", "cycleway=lane"]
+ },
+ "mappings": [
+ {
+ "if": "cycleway:surface=wood",
+ "then": {
+ "en": "This street is made of wood",
+ "nl": "Deze weg is gemaakt van hout"
+ }
+ },
+ {
+ "if": "cycleway:surface=concrete",
+ "then": {
+ "en": "This street is made of concrete",
+ "nl": "Deze straat is gemaakt van beton"
+ }
+ },
+ {
+ "if": "cycleway:surface=cobblestone",
+ "then": {
+ "en": "This street is made of cobblestone",
+ "nl": "Deze straat is gemaakt van kasseien"
+ }
+ },
+ {
+ "if": "cycleway:surface=asphalt",
+ "then": {
+ "en": "This street is made of asphalt",
+ "nl": "Deze straat is gemaakt van asfalt"
+ }
+ },
+ {
+ "if": "cycleway:surface=paved",
+ "then": {
+ "en": "This street is paved",
+ "nl": "Deze straat is geplaveid"
+ }
+ }
+ ],
+ "question": {
+ "en": "What is the cycleway:surface of the street made from?",
+ "nl": "Waaruit is het oppervlak van de straat gemaakt?"
+ }
+ },
+ {
+ "render": {
+ "en": "This cyleway has the smoothness {cycleway:smoothness}",
+ "nl": "Dit fietspad heeft de kwaliteit {cycleway:smoothness}"
+ },
+ "freeform": {
+ "key": "cycleway:smoothness",
+ "addExtraTags": []
+ },
+ "condition": {
+ "or": ["cycleway=shared_lane", "cycleway=lane", "cycleway=track"]
+ },
+ "mappings": [
+ {
+ "if": "cycleway:smoothness=excellent",
+ "then": {
+ "en": "Thin Rollers: rollerblade, skateboard"
+ }
+ },
+ {
+ "if": "cycleway:smoothness=good",
+ "then": {
+ "en": "Thin Wheels: racing bike"
+ }
+ },
+ {
+ "if": "cycleway:smoothness=intermediate",
+ "then": {
+ "en": "Wheels: city bike, wheelchair, scooter"
+ }
+ },
+ {
+ "if": "cycleway:smoothness=bad",
+ "then": {
+ "en": "Robust Wheels: trekking bike, car, rickshaw"
+ }
+ },
+ {
+ "if": "cycleway:smoothness=very_bad",
+ "then": {
+ "en": "High Clearance: light duty off-road vehicle"
+ }
+ },
+ {
+ "if": "cycleway:smoothness=horrible",
+ "then": {
+ "en": "Off-Road: heavy duty off-road vehicle"
+ }
+ },
+ {
+ "if": "cycleway:smoothness=very_horrible",
+ "then": {
+ "en": "Specialized off-road: tractor, ATV"
+ }
+ },
+ {
+ "if": "cycleway:smoothness=impassable",
+ "then": {
+ "en": "Impassable / No wheeled vehicle"
+ }
+ }
+ ],
+ "question": {
+ "en": "What is the cyclewaycycleway:smoothness of the street made from?",
+ "nl": "Waaruit is het oppervlak van de straat gemaakt?"
+ }
+ },
+ {
+ "condition": {
+ "or": ["cycleway=shared_lane", "cycleway="]
+ },
+ "render": {
+ "en": "The carriage width of this road is {width:carriageway}m",
+ "nl": "De breedte van deze rijbaan in deze straat is {width:carriageway}m"
+ },
+ "freeform": {
+ "key": "width:carriageway",
+ "addExtraTags": [],
+ "type": "pfloat"
+ },
+ "question": {
+ "en": "What is the carriage width of this road (in meters)?",
+ "nl": "Hoe breed is de rijbaan in deze straat (in meters)?"
+ }
}
],
"hideUnderlayingFeaturesMinPercentage": 0,
@@ -216,66 +350,133 @@
],
"overrideAll": {
"+tagRenderings": [
- {
- "freeform": {
- "key": "cycleway",
- "addExtraTags": []
- },
- "question": {
- "en": "Is there a cycleway?",
- "nl": "Is er een fietspad?"
- },
- "condition": "highway!=cycleway",
- "mappings": [
- {
- "if": "cycleway=shared_lane",
- "then": {
- "en": "There is a shared lane",
- "nl": "Er is een fietssugestiestrook"
- }
- },
- {
- "if": "cycleway=lane",
- "then": {
- "en": "There is a lane next to the road (seperated with paint)",
- "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)"
- }
- },
- {
- "if": "cycleway=track",
- "then": {
- "en": "There is a track, but no cycleway drawn seperately from this road on the map.",
- "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg."
- }
- },
- {
- "if": "cycleway=seperate",
- "then": {
- "en": "There is a seperately drawn cycleway",
- "nl": "Er is een apart getekend fietspad."
- }
- },
- {
- "if": "cyclestreet=yes",
- "then": {
- "nl": "Dit is een fietsstraat.",
- "en": "This is a cyclestreet."
- }
- },
- {
- "if": "cycleway=",
- "then": {
- "en": "There is no cycleway",
- "nl": "Er is geen fietspad"
- },
- "hideInAnswer": true
- }
- ],
- "render": {
- "en": "Unknown cycleway situation",
- "nl": "Onbekende fietspad situatie"
- }
+ {
+ "freeform": {
+ "key": "cycleway",
+ "addExtraTags": []
},
+ "question": {
+ "en": "Is there a cycleway?",
+ "nl": "Is er een fietspad?"
+ },
+ "condition": "highway!=cycleway",
+ "mappings": [
+ {
+ "if": "cycleway=shared_lane",
+ "then": {
+ "en": "There is a shared lane",
+ "nl": "Er is een fietssugestiestrook"
+ }
+ },
+ {
+ "if": "cycleway=lane",
+ "then": {
+ "en": "There is a lane next to the road (seperated with paint)",
+ "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)"
+ }
+ },
+ {
+ "if": "cycleway=track",
+ "then": {
+ "en": "There is a track, but no cycleway drawn seperately from this road on the map.",
+ "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg."
+ }
+ },
+ {
+ "if": "cycleway=seperate",
+ "then": {
+ "en": "There is a seperately drawn cycleway",
+ "nl": "Er is een apart getekend fietspad."
+ }
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": {
+ "nl": "Dit is een fietsstraat.",
+ "en": "This is a cyclestreet."
+ }
+ },
+ {
+ "if": "cycleway=",
+ "then": {
+ "en": "There is no cycleway",
+ "nl": "Er is geen fietspad"
+ },
+ "hideInAnswer": true
+ }
+ ],
+ "render": {
+ "en": "Unknown cycleway situation",
+ "nl": "Onbekende fietspad situatie"
+ }
+ },
+ {
+ "render": {
+ "en": "This road has the smoothness {smoothness}",
+ "nl": "Deze weg heeft de kwaliteit {smoothness}"
+ },
+ "freeform": {
+ "key": "smoothness",
+ "addExtraTags": []
+ },
+ "condition": {
+ "or": ["cycleway=no", "highway=cycleway"]
+ },
+ "mappings": [
+ {
+ "if": "smoothness=excellent",
+ "then": {
+ "en": "Thin Rollers: rollerblade, skateboard"
+ }
+ },
+ {
+ "if": "smoothness=good",
+ "then": {
+ "en": "Thin Wheels: racing bike"
+ }
+ },
+ {
+ "if": "smoothness=intermediate",
+ "then": {
+ "en": "Wheels: city bike, wheelchair, scooter"
+ }
+ },
+ {
+ "if": "smoothness=bad",
+ "then": {
+ "en": "Robust Wheels: trekking bike, car, rickshaw"
+ }
+ },
+ {
+ "if": "smoothness=very_bad",
+ "then": {
+ "en": "High Clearance: light duty off-road vehicle"
+ }
+ },
+ {
+ "if": "smoothness=horrible",
+ "then": {
+ "en": "Off-Road: heavy duty off-road vehicle"
+ }
+ },
+ {
+ "if": "smoothness=very_horrible",
+ "then": {
+ "en": "Specialized off-road: tractor, ATV"
+ }
+ },
+ {
+ "if": "smoothness=impassable",
+ "then": {
+ "en": "Impassable / No wheeled vehicle"
+ }
+ }
+ ],
+ "question": {
+ "en": "What is the cyclewaysmoothness of the street made from?",
+ "nl": "Waaruit is het oppervlak van de straat gemaakt?"
+ }
+ },
{
"render": {
"en": "This road is made of {surface}",
@@ -326,28 +527,7 @@
"en": "What is the surface of the street made from?",
"nl": "Waaruit is het oppervlak van de straat gemaakt?"
}
- },
- {
- "condition": {
- "or": [
- "cycleway=shared_lane",
- "cycleway="
- ]
- },
- "render": {
- "en": "The carriage width of this road is {width:carriageway}m",
- "nl": "De breedte van deze rijbaan in deze straat is {width:carriageway}m"
- },
- "freeform": {
- "key": "width:carriageway",
- "addExtraTags": [],
- "type": "pfloat"
- },
- "question": {
- "en": "What is the carriage width of this road (in meters)?",
- "nl": "Hoe breed is de rijbaan in deze straat (in meters)?"
- }
}
]
}
-}
\ No newline at end of file
+}
From b5f9a1733de1eb4076abc7d4b59a7f693d27e4bc Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Mon, 12 Jul 2021 11:44:24 +0200
Subject: [PATCH 15/71] Fix random typos
---
assets/themes/cycle_infra/cycle_infra.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 7feddf7f3b..3aabe2350c 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -248,8 +248,8 @@
}
],
"question": {
- "en": "What is the cyclewaycycleway:smoothness of the street made from?",
- "nl": "Waaruit is het oppervlak van de straat gemaakt?"
+ "en": "What is the smoothness of this cycleway?",
+ "nl": "Wat is de kwaliteit van dit fietspad?"
}
},
{
@@ -473,8 +473,8 @@
}
],
"question": {
- "en": "What is the cyclewaysmoothness of the street made from?",
- "nl": "Waaruit is het oppervlak van de straat gemaakt?"
+ "en": "What is the smoothness of this street?",
+ "nl": "Wat is de kwaliteit van deze straat?"
}
},
{
From 7a73f6416ba69b454601b13d3d90dcdcf3365af3 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Tue, 13 Jul 2021 14:35:29 +0200
Subject: [PATCH 16/71] Restructure layer, added barrier basics
---
Svg.ts | 12 +-
assets/svg/barrier.svg | 10 +
assets/svg/license_info.json | 10 +
assets/themes/cycle_infra/cycle_infra.json | 453 ++++++++++++---------
4 files changed, 299 insertions(+), 186 deletions(-)
create mode 100644 assets/svg/barrier.svg
diff --git a/Svg.ts b/Svg.ts
index 9a5c94b8f2..66d15883fb 100644
--- a/Svg.ts
+++ b/Svg.ts
@@ -39,6 +39,11 @@ export default class Svg {
public static back_svg() { return new Img(Svg.back, true);}
public static back_ui() { return new FixedUiElement(Svg.back_img);}
+ public static barrier = " "
+ public static barrier_img = Img.AsImageElement(Svg.barrier)
+ public static barrier_svg() { return new Img(Svg.barrier, true);}
+ public static barrier_ui() { return new FixedUiElement(Svg.barrier_img);}
+
public static bug = ""
public static bug_img = Img.AsImageElement(Svg.bug)
public static bug_svg() { return new Img(Svg.bug, true);}
@@ -94,6 +99,11 @@ export default class Svg {
public static crosshair_svg() { return new Img(Svg.crosshair, true);}
public static crosshair_ui() { return new FixedUiElement(Svg.crosshair_img);}
+ public static cycle_infra = ""
+ public static cycle_infra_img = Img.AsImageElement(Svg.cycle_infra)
+ public static cycle_infra_svg() { return new Img(Svg.cycle_infra, true);}
+ public static cycle_infra_ui() { return new FixedUiElement(Svg.cycle_infra_img);}
+
public static delete_icon = " "
public static delete_icon_img = Img.AsImageElement(Svg.delete_icon)
public static delete_icon_svg() { return new Img(Svg.delete_icon, true);}
@@ -334,4 +344,4 @@ export default class Svg {
public static wikipedia_svg() { return new Img(Svg.wikipedia, true);}
public static wikipedia_ui() { return new FixedUiElement(Svg.wikipedia_img);}
-public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
+public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"barrier.svg": Svg.barrier,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"cycle-infra.svg": Svg.cycle_infra,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
diff --git a/assets/svg/barrier.svg b/assets/svg/barrier.svg
new file mode 100644
index 0000000000..08bb800f50
--- /dev/null
+++ b/assets/svg/barrier.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json
index 1ef8f94c8e..ef0b9ac317 100644
--- a/assets/svg/license_info.json
+++ b/assets/svg/license_info.json
@@ -79,6 +79,16 @@
"license": "CC0",
"sources": []
},
+ {
+ "authors": [
+ "westnordost"
+ ],
+ "path": "barrier.svg",
+ "license": "GPL-3.0",
+ "sources": [
+ "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/barrier.svg"
+ ]
+ },
{
"authors": [
"Github"
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 3aabe2350c..044e91bdc1 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -28,7 +28,7 @@
"en": "Cycleways",
"nl": "Fietspaden"
},
- "minzoom": 12,
+ "minzoom": 14,
"source": {
"osmTags": {
"or": [
@@ -77,6 +77,66 @@
},
"description": {},
"tagRenderings": [
+ {
+ "freeform": {
+ "key": "cycleway",
+ "addExtraTags": []
+ },
+ "question": {
+ "en": "What kind of cycleway is there?",
+ "nl": "Wat voor fietspad is hier?"
+ },
+ "condition": "highway!=cycleway",
+ "mappings": [
+ {
+ "if": "cycleway=shared_lane",
+ "then": {
+ "en": "There is a shared lane",
+ "nl": "Er is een fietssugestiestrook"
+ }
+ },
+ {
+ "if": "cycleway=lane",
+ "then": {
+ "en": "There is a lane next to the road (seperated with paint)",
+ "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)"
+ }
+ },
+ {
+ "if": "cycleway=track",
+ "then": {
+ "en": "There is a track, but no cycleway drawn seperately from this road on the map.",
+ "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg."
+ }
+ },
+ {
+ "if": "cycleway=seperate",
+ "then": {
+ "en": "There is a seperately drawn cycleway",
+ "nl": "Er is een apart getekend fietspad."
+ }
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": {
+ "nl": "Dit is een fietsstraat.",
+ "en": "This is a cyclestreet."
+ }
+ },
+ {
+ "if": "cycleway=",
+ "then": {
+ "en": "There is no cycleway",
+ "nl": "Er is geen fietspad"
+ },
+ "hideInAnswer": true
+ }
+ ],
+ "render": {
+ "en": "Unknown cycleway situation",
+ "nl": "Onbekende fietspad situatie"
+ }
+ },
{
"render": {
"en": "The maximum speed on this road is {maxspeed} km/h",
@@ -269,6 +329,124 @@
"en": "What is the carriage width of this road (in meters)?",
"nl": "Hoe breed is de rijbaan in deze straat (in meters)?"
}
+ },
+ {
+ "render": {
+ "en": "This road has the smoothness {smoothness}",
+ "nl": "Deze weg heeft de kwaliteit {smoothness}"
+ },
+ "freeform": {
+ "key": "smoothness",
+ "addExtraTags": []
+ },
+ "condition": {
+ "or": ["cycleway=no", "highway=cycleway"]
+ },
+ "mappings": [
+ {
+ "if": "smoothness=excellent",
+ "then": {
+ "en": "Thin Rollers: rollerblade, skateboard"
+ }
+ },
+ {
+ "if": "smoothness=good",
+ "then": {
+ "en": "Thin Wheels: racing bike"
+ }
+ },
+ {
+ "if": "smoothness=intermediate",
+ "then": {
+ "en": "Wheels: city bike, wheelchair, scooter"
+ }
+ },
+ {
+ "if": "smoothness=bad",
+ "then": {
+ "en": "Robust Wheels: trekking bike, car, rickshaw"
+ }
+ },
+ {
+ "if": "smoothness=very_bad",
+ "then": {
+ "en": "High Clearance: light duty off-road vehicle"
+ }
+ },
+ {
+ "if": "smoothness=horrible",
+ "then": {
+ "en": "Off-Road: heavy duty off-road vehicle"
+ }
+ },
+ {
+ "if": "smoothness=very_horrible",
+ "then": {
+ "en": "Specialized off-road: tractor, ATV"
+ }
+ },
+ {
+ "if": "smoothness=impassable",
+ "then": {
+ "en": "Impassable / No wheeled vehicle"
+ }
+ }
+ ],
+ "question": {
+ "en": "What is the smoothness of this street?",
+ "nl": "Wat is de kwaliteit van deze straat?"
+ }
+ },
+ {
+ "render": {
+ "en": "This road is made of {surface}",
+ "nl": "Deze weg is gemaakt van {surface}"
+ },
+ "freeform": {
+ "key": "surface",
+ "addExtraTags": []
+ },
+ "mappings": [
+ {
+ "if": "surface=wood",
+ "then": {
+ "en": "This street is made of wood",
+ "nl": "Deze weg is gemaakt van hout"
+ }
+ },
+ {
+ "if": "surface=concrete",
+ "then": {
+ "en": "This street is made of concrete",
+ "nl": "Deze straat is gemaakt van beton"
+ }
+ },
+ {
+ "if": "surface=cobblestone",
+ "then": {
+ "en": "This street is made of cobblestone",
+ "nl": "Deze straat is gemaakt van kasseien"
+ }
+ },
+ {
+ "if": "surface=asphalt",
+ "then": {
+ "en": "This street is made of asphalt",
+ "nl": "Deze straat is gemaakt van asfalt"
+ }
+ },
+ {
+ "if": "surface=paved",
+ "then": {
+ "en": "This street is paved",
+ "nl": "Deze straat is geplaveid"
+ }
+ }
+ ],
+ "question": {
+ "en": "What is the surface of the street made from?",
+ "nl": "Waaruit is het oppervlak van de straat gemaakt?"
+ }
}
],
"hideUnderlayingFeaturesMinPercentage": 0,
@@ -325,7 +503,7 @@
]
}
},
- "minzoom": 18,
+ "minzoom": 19,
"wayHandling": 0,
"title": {
"render": {
@@ -345,189 +523,94 @@
"render": "#aaaaaa",
"mappings": []
},
+ "tagRenderings": [
+ {
+ "freeform": {
+ "key": "cycleway",
+ "addExtraTags": []
+ },
+ "question": {
+ "en": "Is there a cycleway?",
+ "nl": "Is er een fietspad?"
+ },
+ "condition": "highway!=cycleway",
+ "mappings": [
+ {
+ "if": "cycleway=shared_lane",
+ "then": {
+ "en": "There is a shared lane",
+ "nl": "Er is een fietssugestiestrook"
+ }
+ },
+ {
+ "if": "cycleway=lane",
+ "then": {
+ "en": "There is a lane next to the road (seperated with paint)",
+ "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)"
+ }
+ },
+ {
+ "if": "cycleway=track",
+ "then": {
+ "en": "There is a track, but no cycleway drawn seperately from this road on the map.",
+ "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg."
+ }
+ },
+ {
+ "if": "cycleway=seperate",
+ "then": {
+ "en": "There is a seperately drawn cycleway",
+ "nl": "Er is een apart getekend fietspad."
+ }
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": {
+ "nl": "Dit is een fietsstraat.",
+ "en": "This is a cyclestreet."
+ }
+ },
+ {
+ "if": "cycleway=",
+ "then": {
+ "en": "There is no cycleway",
+ "nl": "Er is geen fietspad"
+ },
+ "hideInAnswer": true
+ }
+ ],
+ "render": {
+ "en": "Unknown cycleway situation",
+ "nl": "Onbekende fietspad situatie"
+ }
+ }
+ ]
+ },
+ {
+ "id": "barriers",
+ "name": {
+ "en": "Barriers",
+ "nl": "Barrières"
+ },
+ "description": {
+ "en": "Obstacles while cycling, such as bollards and cycle barriers",
+ "nl": "Hindernissen tijdens het fietsen, zoals paaltjes en fietshekjes"
+ },
+ "source": {
+ "osmTags": {
+ "or": ["barrier=bollard", "barrier=cycle_barrier"]
+ }
+ },
+ "minzoom": 14,
+ "title": {
+ "render": {
+ "en": "Barrier",
+ "nl": "Barrière"
+ }
+ },
+ "icon": "./assets/svg/barrier.svg",
+ "width": "5",
"tagRenderings": []
}
- ],
- "overrideAll": {
- "+tagRenderings": [
- {
- "freeform": {
- "key": "cycleway",
- "addExtraTags": []
- },
- "question": {
- "en": "Is there a cycleway?",
- "nl": "Is er een fietspad?"
- },
- "condition": "highway!=cycleway",
- "mappings": [
- {
- "if": "cycleway=shared_lane",
- "then": {
- "en": "There is a shared lane",
- "nl": "Er is een fietssugestiestrook"
- }
- },
- {
- "if": "cycleway=lane",
- "then": {
- "en": "There is a lane next to the road (seperated with paint)",
- "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)"
- }
- },
- {
- "if": "cycleway=track",
- "then": {
- "en": "There is a track, but no cycleway drawn seperately from this road on the map.",
- "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg."
- }
- },
- {
- "if": "cycleway=seperate",
- "then": {
- "en": "There is a seperately drawn cycleway",
- "nl": "Er is een apart getekend fietspad."
- }
- },
- {
- "if": "cyclestreet=yes",
- "then": {
- "nl": "Dit is een fietsstraat.",
- "en": "This is a cyclestreet."
- }
- },
- {
- "if": "cycleway=",
- "then": {
- "en": "There is no cycleway",
- "nl": "Er is geen fietspad"
- },
- "hideInAnswer": true
- }
- ],
- "render": {
- "en": "Unknown cycleway situation",
- "nl": "Onbekende fietspad situatie"
- }
- },
- {
- "render": {
- "en": "This road has the smoothness {smoothness}",
- "nl": "Deze weg heeft de kwaliteit {smoothness}"
- },
- "freeform": {
- "key": "smoothness",
- "addExtraTags": []
- },
- "condition": {
- "or": ["cycleway=no", "highway=cycleway"]
- },
- "mappings": [
- {
- "if": "smoothness=excellent",
- "then": {
- "en": "Thin Rollers: rollerblade, skateboard"
- }
- },
- {
- "if": "smoothness=good",
- "then": {
- "en": "Thin Wheels: racing bike"
- }
- },
- {
- "if": "smoothness=intermediate",
- "then": {
- "en": "Wheels: city bike, wheelchair, scooter"
- }
- },
- {
- "if": "smoothness=bad",
- "then": {
- "en": "Robust Wheels: trekking bike, car, rickshaw"
- }
- },
- {
- "if": "smoothness=very_bad",
- "then": {
- "en": "High Clearance: light duty off-road vehicle"
- }
- },
- {
- "if": "smoothness=horrible",
- "then": {
- "en": "Off-Road: heavy duty off-road vehicle"
- }
- },
- {
- "if": "smoothness=very_horrible",
- "then": {
- "en": "Specialized off-road: tractor, ATV"
- }
- },
- {
- "if": "smoothness=impassable",
- "then": {
- "en": "Impassable / No wheeled vehicle"
- }
- }
- ],
- "question": {
- "en": "What is the smoothness of this street?",
- "nl": "Wat is de kwaliteit van deze straat?"
- }
- },
- {
- "render": {
- "en": "This road is made of {surface}",
- "nl": "Deze weg is gemaakt van {surface}"
- },
- "freeform": {
- "key": "surface",
- "addExtraTags": []
- },
- "mappings": [
- {
- "if": "surface=wood",
- "then": {
- "en": "This street is made of wood",
- "nl": "Deze weg is gemaakt van hout"
- }
- },
- {
- "if": "surface=concrete",
- "then": {
- "en": "This street is made of concrete",
- "nl": "Deze straat is gemaakt van beton"
- }
- },
- {
- "if": "surface=cobblestone",
- "then": {
- "en": "This street is made of cobblestone",
- "nl": "Deze straat is gemaakt van kasseien"
- }
- },
- {
- "if": "surface=asphalt",
- "then": {
- "en": "This street is made of asphalt",
- "nl": "Deze straat is gemaakt van asfalt"
- }
- },
- {
- "if": "surface=paved",
- "then": {
- "en": "This street is paved",
- "nl": "Deze straat is geplaveid"
- }
- }
- ],
- "question": {
- "en": "What is the surface of the street made from?",
- "nl": "Waaruit is het oppervlak van de straat gemaakt?"
- }
- }
- ]
- }
+ ]
}
From 6a269a2c6e00919f773854091b0c53e21d0376f5 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Tue, 13 Jul 2021 16:52:22 +0200
Subject: [PATCH 17/71] Bollard details
---
assets/themes/cycle_infra/cycle_infra.json | 82 +++++++++++++++++++++-
1 file changed, 81 insertions(+), 1 deletion(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 044e91bdc1..1cbf11567e 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -610,7 +610,87 @@
},
"icon": "./assets/svg/barrier.svg",
"width": "5",
- "tagRenderings": []
+ "tagRenderings": [
+ {
+ "question": {
+ "en": "Can a bicycle go past this barrier?",
+ "nl": "Kan een fietser langs deze barrière?"
+ },
+ "mappings": [
+ {
+ "if": "bicycle=yes",
+ "then": {
+ "en": "A cyclist can go past this.",
+ "nl": "Een fietser kan hier langs."
+ }
+ },
+ {
+ "if": "bicycle=no",
+ "then": {
+ "en": "A cyclist can not go past this.",
+ "nl": "Een fietser kan hier niet langs."
+ }
+ }
+ ]
+ },
+ {
+ "render": {
+ "en": "Maximum width: {maxwidth} m",
+ "nl": "Maximumbreedte: {maxwidth} m"
+ },
+ "question": {
+ "en": "How wide is the gap left over besides the barrier?",
+ "nl": "Hoe breed is de ruimte naast de barrière?"
+ },
+ "freeform": {
+ "key": "maxwidth",
+ "type": "pfloat"
+ }
+ },
+ {
+ "question": {
+ "en": "What kind of bollard is this?",
+ "nl": "Wat voor soort paal is dit?"
+ },
+ "mappings": [
+ {
+ "if": "bollard=removable",
+ "then": {
+ "en": "Removable bollard",
+ "nl": "Verwijderbare paal"
+ }
+ },
+ {
+ "if": "bollard=fixed",
+ "then": {
+ "en": "Fixed bollard",
+ "nl": "Vaste paal"
+ }
+ },
+ {
+ "if": "bollard=foldable",
+ "then": {
+ "en": "Bollard that can be folded down",
+ "nl": "Paal die platgevouwen kan worden"
+ }
+ },
+ {
+ "if": "bollard=flexible",
+ "then": {
+ "en": "Flexible bollard, usually plastic",
+ "nl": "Flexibele paal, meestal plastic"
+ }
+ },
+ {
+ "if": "bollard=rising",
+ "then": {
+ "en": "Rising bollard",
+ "nl": "Verzonken poller"
+ }
+ }
+ ]
+ }
+ ]
}
]
}
From f4d555753478d00f2fe5dea1af34035c62d7f3da Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Wed, 14 Jul 2021 11:40:00 +0200
Subject: [PATCH 18/71] Added crossing to bicycle_infra
---
Svg.ts | 12 ++-
assets/layers/crossings/crossings.json | 99 ++++++++++++++++++++++
assets/svg/license_info.json | 24 +++++-
assets/svg/pedestrian_crossing.svg | 11 +++
assets/svg/traffic_lights.svg | 22 +++++
assets/themes/cycle_infra/cycle_infra.json | 10 ++-
6 files changed, 171 insertions(+), 7 deletions(-)
create mode 100644 assets/layers/crossings/crossings.json
create mode 100644 assets/svg/pedestrian_crossing.svg
create mode 100644 assets/svg/traffic_lights.svg
diff --git a/Svg.ts b/Svg.ts
index 66d15883fb..e787d439eb 100644
--- a/Svg.ts
+++ b/Svg.ts
@@ -239,6 +239,11 @@ export default class Svg {
public static osm_logo_svg() { return new Img(Svg.osm_logo, true);}
public static osm_logo_ui() { return new FixedUiElement(Svg.osm_logo_img);}
+ public static pedestrian_crossing = " "
+ public static pedestrian_crossing_img = Img.AsImageElement(Svg.pedestrian_crossing)
+ public static pedestrian_crossing_svg() { return new Img(Svg.pedestrian_crossing, true);}
+ public static pedestrian_crossing_ui() { return new FixedUiElement(Svg.pedestrian_crossing_img);}
+
public static pencil = ""
public static pencil_img = Img.AsImageElement(Svg.pencil)
public static pencil_svg() { return new Img(Svg.pencil, true);}
@@ -319,6 +324,11 @@ export default class Svg {
public static statistics_svg() { return new Img(Svg.statistics, true);}
public static statistics_ui() { return new FixedUiElement(Svg.statistics_img);}
+ public static traffic_lights = " "
+ public static traffic_lights_img = Img.AsImageElement(Svg.traffic_lights)
+ public static traffic_lights_svg() { return new Img(Svg.traffic_lights, true);}
+ public static traffic_lights_ui() { return new FixedUiElement(Svg.traffic_lights_img);}
+
public static translate = " "
public static translate_img = Img.AsImageElement(Svg.translate)
public static translate_svg() { return new Img(Svg.translate, true);}
@@ -344,4 +354,4 @@ export default class Svg {
public static wikipedia_svg() { return new Img(Svg.wikipedia, true);}
public static wikipedia_ui() { return new FixedUiElement(Svg.wikipedia_img);}
-public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"barrier.svg": Svg.barrier,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"cycle-infra.svg": Svg.cycle_infra,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
+public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"barrier.svg": Svg.barrier,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"cycle-infra.svg": Svg.cycle_infra,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pedestrian_crossing.svg": Svg.pedestrian_crossing,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"traffic_lights.svg": Svg.traffic_lights,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
new file mode 100644
index 0000000000..affcb8a659
--- /dev/null
+++ b/assets/layers/crossings/crossings.json
@@ -0,0 +1,99 @@
+{
+ "id": "crossings",
+ "name": {
+ "en": "Crossings",
+ "nl": "Oversteekplaatsen"
+ },
+ "description": {
+ "en": "Crossings for pedestrians and cyclists",
+ "nl": "Oversteekplaatsen voor voetgangers en fietsers"
+ },
+ "source": {
+ "osmTags": {
+ "or": ["highway=traffic_signals", "highway=crossing"]
+ }
+ },
+ "minzoom": 14,
+ "title": {
+ "render": {
+ "en": "Crossing",
+ "nl": "Oversteekplaats"
+ },
+ "mappings": [
+ {
+ "if": "highway=traffic_signals",
+ "then": {
+ "en": "Traffic signal",
+ "nl": "Verkeerslicht"
+ }
+ },
+ {
+ "if": "crossing=traffic_signals",
+ "then": {
+ "en": "Crossing with traffic signals",
+ "nl": "Oversteektplaats met verkeerslichten"
+ }
+ }
+ ]
+ },
+ "icon": {
+ "render": "./assets/svg/pedestrian_crossing.svg",
+ "mappings": [
+ {
+ "if": {
+ "or": ["highway=traffic_signals", "crossing=traffic_signals"]
+ },
+ "then": "./assets/svg/traffic_lights.svg"
+ }
+ ]
+ },
+ "width": "5",
+ "tagRenderings": [
+ {
+ "question": {
+ "en": "What kind of crossing is this?",
+ "nl": "Wat voor oversteekplaats is dit?"
+ },
+ "condition": "highway=crossing",
+ "mappings": [
+ {
+ "if": "crossing=uncontrolled",
+ "then": {
+ "en": "Crossing, without traffic lights",
+ "nl": "Oversteekplaats, zonder verkeerslichten"
+ }
+ },
+ {
+ "if": "crossing=traffic_signals",
+ "then": {
+ "en": "Crossing with traffic signals",
+ "nl": "Oversteekplaats met verkeerslichten"
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "Is this crossing also for bicycles?",
+ "nl": "Is deze oversteekplaats ook voor fietsers"
+ },
+ "condition": "highway=crossing",
+ "mappings": [
+ {
+ "if": "bicycle=yes",
+ "then": {
+ "en": "A cyclist can use this crossing",
+ "nl": "Een fietser kan deze oversteekplaats gebruiken"
+ }
+ },
+ {
+ "if": "bicycle=no",
+ "then": {
+ "en": "A cyclist can not use this crossing",
+ "nl": "Een fietser kan niet deze oversteekplaats gebruiken"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json
index ef0b9ac317..53f8dc63a2 100644
--- a/assets/svg/license_info.json
+++ b/assets/svg/license_info.json
@@ -81,10 +81,10 @@
},
{
"authors": [
- "westnordost"
+ "Tobias Zwick"
],
"path": "barrier.svg",
- "license": "GPL-3.0",
+ "license": "CC-BY-SA 4.0",
"sources": [
"https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/barrier.svg"
]
@@ -342,6 +342,16 @@
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
},
+ {
+ "authors": [
+ "Tobias Zwick"
+ ],
+ "path": "pedestrian_crossing.svg",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/pedestrian_crossing.svg"
+ ]
+ },
{
"authors": [],
"path": "star.svg",
@@ -366,6 +376,16 @@
"license": "CC0; trivial",
"sources": []
},
+ {
+ "authors": [
+ "Tobias Zwick"
+ ],
+ "path": "traffic_lights.svg",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/traffic_lights.svg"
+ ]
+ },
{
"authors": [],
"path": "logo.svg",
diff --git a/assets/svg/pedestrian_crossing.svg b/assets/svg/pedestrian_crossing.svg
new file mode 100644
index 0000000000..843eefbbc0
--- /dev/null
+++ b/assets/svg/pedestrian_crossing.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/assets/svg/traffic_lights.svg b/assets/svg/traffic_lights.svg
new file mode 100644
index 0000000000..dd1d856370
--- /dev/null
+++ b/assets/svg/traffic_lights.svg
@@ -0,0 +1,22 @@
+
+
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 1cbf11567e..a488a9ba39 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -635,15 +635,15 @@
},
{
"render": {
- "en": "Maximum width: {maxwidth} m",
- "nl": "Maximumbreedte: {maxwidth} m"
+ "en": "Maximum width: {maxwidth:physical} m",
+ "nl": "Maximumbreedte: {maxwidth:physical} m"
},
"question": {
"en": "How wide is the gap left over besides the barrier?",
"nl": "Hoe breed is de ruimte naast de barrière?"
},
"freeform": {
- "key": "maxwidth",
+ "key": "maxwidth:physical",
"type": "pfloat"
}
},
@@ -652,6 +652,7 @@
"en": "What kind of bollard is this?",
"nl": "Wat voor soort paal is dit?"
},
+ "condition": "barrier=bollard",
"mappings": [
{
"if": "bollard=removable",
@@ -691,6 +692,7 @@
]
}
]
- }
+ },
+ "crossings"
]
}
From 2de8e98debd54015f685d85657304ae802f6f9c6 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Wed, 14 Jul 2021 13:53:01 +0200
Subject: [PATCH 19/71] Added questions about island, tactile paving and
traffic light
---
Svg.ts | 12 +--
assets/layers/crossings/crossings.json | 83 ++++++++++++++++++-
assets/layers/crossings/license_info.json | 22 +++++
.../crossings}/pedestrian_crossing.svg | 0
.../crossings}/traffic_lights.svg | 0
assets/svg/license_info.json | 20 -----
6 files changed, 104 insertions(+), 33 deletions(-)
create mode 100644 assets/layers/crossings/license_info.json
rename assets/{svg => layers/crossings}/pedestrian_crossing.svg (100%)
rename assets/{svg => layers/crossings}/traffic_lights.svg (100%)
diff --git a/Svg.ts b/Svg.ts
index e787d439eb..66d15883fb 100644
--- a/Svg.ts
+++ b/Svg.ts
@@ -239,11 +239,6 @@ export default class Svg {
public static osm_logo_svg() { return new Img(Svg.osm_logo, true);}
public static osm_logo_ui() { return new FixedUiElement(Svg.osm_logo_img);}
- public static pedestrian_crossing = " "
- public static pedestrian_crossing_img = Img.AsImageElement(Svg.pedestrian_crossing)
- public static pedestrian_crossing_svg() { return new Img(Svg.pedestrian_crossing, true);}
- public static pedestrian_crossing_ui() { return new FixedUiElement(Svg.pedestrian_crossing_img);}
-
public static pencil = ""
public static pencil_img = Img.AsImageElement(Svg.pencil)
public static pencil_svg() { return new Img(Svg.pencil, true);}
@@ -324,11 +319,6 @@ export default class Svg {
public static statistics_svg() { return new Img(Svg.statistics, true);}
public static statistics_ui() { return new FixedUiElement(Svg.statistics_img);}
- public static traffic_lights = " "
- public static traffic_lights_img = Img.AsImageElement(Svg.traffic_lights)
- public static traffic_lights_svg() { return new Img(Svg.traffic_lights, true);}
- public static traffic_lights_ui() { return new FixedUiElement(Svg.traffic_lights_img);}
-
public static translate = " "
public static translate_img = Img.AsImageElement(Svg.translate)
public static translate_svg() { return new Img(Svg.translate, true);}
@@ -354,4 +344,4 @@ export default class Svg {
public static wikipedia_svg() { return new Img(Svg.wikipedia, true);}
public static wikipedia_ui() { return new FixedUiElement(Svg.wikipedia_img);}
-public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"barrier.svg": Svg.barrier,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"cycle-infra.svg": Svg.cycle_infra,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pedestrian_crossing.svg": Svg.pedestrian_crossing,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"traffic_lights.svg": Svg.traffic_lights,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
+public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"barrier.svg": Svg.barrier,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"cycle-infra.svg": Svg.cycle_infra,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
index affcb8a659..23cd1fee69 100644
--- a/assets/layers/crossings/crossings.json
+++ b/assets/layers/crossings/crossings.json
@@ -37,13 +37,13 @@
]
},
"icon": {
- "render": "./assets/svg/pedestrian_crossing.svg",
+ "render": "./assets/layers/crossings/pedestrian_crossing.svg",
"mappings": [
{
"if": {
"or": ["highway=traffic_signals", "crossing=traffic_signals"]
},
- "then": "./assets/svg/traffic_lights.svg"
+ "then": "./assets/layers/crossings/traffic_lights.svg"
}
]
},
@@ -94,6 +94,85 @@
}
}
]
+ },
+ {
+ "question": {
+ "en": "Does this crossing have an island in the middle?",
+ "nl": "Heeft deze oversteekplaats een verkeerseiland in het midden?"
+ },
+ "condition": "highway=crossing",
+ "mappings": [
+ {
+ "if": "crossing:island=yes",
+ "then": {
+ "en": "This crossing has an island in the middle",
+ "nl": "Deze oversteekplaats heeft een verkeerseiland in het midden"
+ }
+ },
+ {
+ "if": "crossing:island=no",
+ "then": {
+ "en": "This crossing does not have an island in the middle",
+ "nl": "Deze oversteekplaats heeft niet een verkeerseiland in het midden"
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "Does this crossing have tactile paving?",
+ "nl": "Heeft deze oversteekplaats een geleidelijn?"
+ },
+ "condition": "highway=crossing",
+ "mappings": [
+ {
+ "if": "tactile_paving=yes",
+ "then": {
+ "en": "This crossing has tactile paving",
+ "nl": "Deze oversteekplaats heeft een geleidelijn"
+ }
+ },
+ {
+ "if": "tactile_paving=no",
+ "then": {
+ "en": "This crossing does not have tactile paving",
+ "nl": "Deze oversteekplaats heeft niet een geleidelijn"
+ }
+ },
+ {
+ "if": "tactile_paving=incorrect",
+ "then": {
+ "en": "This crossing has tactile paving, but is not correct",
+ "nl": "Deze oversteekplaats heeft een geleidelijn, die incorrect is."
+ },
+ "hideInAnswer": true
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "Does this traffic light have a button to request green light?",
+ "nl": "Heeft dit verkeerslicht een knop voor groen licht?"
+ },
+ "condition": {
+ "or": ["highway=traffic_signals", "crossing=traffic_signals"]
+ },
+ "mappings": [
+ {
+ "if": "button_operated=yes",
+ "then": {
+ "en": "This traffic light has a button to request green light",
+ "nl": "Dit verkeerslicht heeft een knop voor groen licht"
+ }
+ },
+ {
+ "if": "button_operated=no",
+ "then": {
+ "en": "This traffic light does not have a button to request green light",
+ "nl": "Dit verkeerlicht heeft niet een knop voor groen licht"
+ }
+ }
+ ]
}
]
}
diff --git a/assets/layers/crossings/license_info.json b/assets/layers/crossings/license_info.json
new file mode 100644
index 0000000000..b5a0b67e1e
--- /dev/null
+++ b/assets/layers/crossings/license_info.json
@@ -0,0 +1,22 @@
+[
+ {
+ "authors": [
+ "Tobias Zwick"
+ ],
+ "path": "pedestrian_crossing.svg",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/pedestrian_crossing.svg"
+ ]
+ },
+ {
+ "authors": [
+ "Tobias Zwick"
+ ],
+ "path": "traffic_lights.svg",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/traffic_lights.svg"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/assets/svg/pedestrian_crossing.svg b/assets/layers/crossings/pedestrian_crossing.svg
similarity index 100%
rename from assets/svg/pedestrian_crossing.svg
rename to assets/layers/crossings/pedestrian_crossing.svg
diff --git a/assets/svg/traffic_lights.svg b/assets/layers/crossings/traffic_lights.svg
similarity index 100%
rename from assets/svg/traffic_lights.svg
rename to assets/layers/crossings/traffic_lights.svg
diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json
index 53f8dc63a2..7cb81d246f 100644
--- a/assets/svg/license_info.json
+++ b/assets/svg/license_info.json
@@ -342,16 +342,6 @@
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
},
- {
- "authors": [
- "Tobias Zwick"
- ],
- "path": "pedestrian_crossing.svg",
- "license": "CC-BY-SA 4.0",
- "sources": [
- "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/pedestrian_crossing.svg"
- ]
- },
{
"authors": [],
"path": "star.svg",
@@ -376,16 +366,6 @@
"license": "CC0; trivial",
"sources": []
},
- {
- "authors": [
- "Tobias Zwick"
- ],
- "path": "traffic_lights.svg",
- "license": "CC-BY-SA 4.0",
- "sources": [
- "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/traffic_lights.svg"
- ]
- },
{
"authors": [],
"path": "logo.svg",
From 213eb3fdef2f653e635be7152a3f626460808ee3 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Wed, 14 Jul 2021 14:16:00 +0200
Subject: [PATCH 20/71] Add title mappings
---
assets/themes/cycle_infra/cycle_infra.json | 46 +++++++++++++++-------
1 file changed, 31 insertions(+), 15 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index a488a9ba39..cecdfa9f5d 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -606,7 +606,23 @@
"render": {
"en": "Barrier",
"nl": "Barrière"
- }
+ },
+ "mappings": [
+ {
+ "if": "barrier=bollard",
+ "then": {
+ "en": "Bollard",
+ "nl": "Paaltje"
+ }
+ },
+ {
+ "if": "barrier=cycle_barrier",
+ "then": {
+ "en": "Cycling Barrier",
+ "nl": "Fietshekjes"
+ }
+ }
+ ]
},
"icon": "./assets/svg/barrier.svg",
"width": "5",
@@ -633,20 +649,6 @@
}
]
},
- {
- "render": {
- "en": "Maximum width: {maxwidth:physical} m",
- "nl": "Maximumbreedte: {maxwidth:physical} m"
- },
- "question": {
- "en": "How wide is the gap left over besides the barrier?",
- "nl": "Hoe breed is de ruimte naast de barrière?"
- },
- "freeform": {
- "key": "maxwidth:physical",
- "type": "pfloat"
- }
- },
{
"question": {
"en": "What kind of bollard is this?",
@@ -690,6 +692,20 @@
}
}
]
+ },
+ {
+ "render": {
+ "en": "Maximum width: {maxwidth:physical} m",
+ "nl": "Maximumbreedte: {maxwidth:physical} m"
+ },
+ "question": {
+ "en": "How wide is the gap left over besides the barrier?",
+ "nl": "Hoe breed is de ruimte naast de barrière?"
+ },
+ "freeform": {
+ "key": "maxwidth:physical",
+ "type": "pfloat"
+ }
}
]
},
From 74262710811f26e421367602571c5a946d87d7b8 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Wed, 14 Jul 2021 14:24:45 +0200
Subject: [PATCH 21/71] Updated smoothness questions
---
assets/themes/cycle_infra/cycle_infra.json | 60 ++++++++--------------
1 file changed, 22 insertions(+), 38 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index cecdfa9f5d..7fc345eca1 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -246,13 +246,9 @@
}
},
{
- "render": {
- "en": "This cyleway has the smoothness {cycleway:smoothness}",
- "nl": "Dit fietspad heeft de kwaliteit {cycleway:smoothness}"
- },
- "freeform": {
- "key": "cycleway:smoothness",
- "addExtraTags": []
+ "question": {
+ "en": "What is the smoothness of this cycleway?",
+ "nl": "Wat is de kwaliteit van dit fietspad?"
},
"condition": {
"or": ["cycleway=shared_lane", "cycleway=lane", "cycleway=track"]
@@ -261,43 +257,43 @@
{
"if": "cycleway:smoothness=excellent",
"then": {
- "en": "Thin Rollers: rollerblade, skateboard"
+ "en": "Usable for thin rollers: rollerblade, skateboard"
}
},
{
"if": "cycleway:smoothness=good",
"then": {
- "en": "Thin Wheels: racing bike"
+ "en": "Usable for thin wheels: racing bike"
}
},
{
"if": "cycleway:smoothness=intermediate",
"then": {
- "en": "Wheels: city bike, wheelchair, scooter"
+ "en": "Usable for normal wheels: city bike, wheelchair, scooter"
}
},
{
"if": "cycleway:smoothness=bad",
"then": {
- "en": "Robust Wheels: trekking bike, car, rickshaw"
+ "en": "Usable for robust wheels: trekking bike, car, rickshaw"
}
},
{
"if": "cycleway:smoothness=very_bad",
"then": {
- "en": "High Clearance: light duty off-road vehicle"
+ "en": "Usable for vehicles with high clearance: light duty off-road vehicle"
}
},
{
"if": "cycleway:smoothness=horrible",
"then": {
- "en": "Off-Road: heavy duty off-road vehicle"
+ "en": "Usable for off-road vehicles: heavy duty off-road vehicle"
}
},
{
"if": "cycleway:smoothness=very_horrible",
"then": {
- "en": "Specialized off-road: tractor, ATV"
+ "en": "Usable for specialized off-road vehicles: tractor, ATV"
}
},
{
@@ -306,11 +302,7 @@
"en": "Impassable / No wheeled vehicle"
}
}
- ],
- "question": {
- "en": "What is the smoothness of this cycleway?",
- "nl": "Wat is de kwaliteit van dit fietspad?"
- }
+ ]
},
{
"condition": {
@@ -331,13 +323,9 @@
}
},
{
- "render": {
- "en": "This road has the smoothness {smoothness}",
- "nl": "Deze weg heeft de kwaliteit {smoothness}"
- },
- "freeform": {
- "key": "smoothness",
- "addExtraTags": []
+ "question": {
+ "en": "What is the smoothness of this street?",
+ "nl": "Wat is de kwaliteit van deze straat?"
},
"condition": {
"or": ["cycleway=no", "highway=cycleway"]
@@ -346,43 +334,43 @@
{
"if": "smoothness=excellent",
"then": {
- "en": "Thin Rollers: rollerblade, skateboard"
+ "en": "Usable for thin rollers: rollerblade, skateboard"
}
},
{
"if": "smoothness=good",
"then": {
- "en": "Thin Wheels: racing bike"
+ "en": "Usable for thin wheels: racing bike"
}
},
{
"if": "smoothness=intermediate",
"then": {
- "en": "Wheels: city bike, wheelchair, scooter"
+ "en": "Usable for normal wheels: city bike, wheelchair, scooter"
}
},
{
"if": "smoothness=bad",
"then": {
- "en": "Robust Wheels: trekking bike, car, rickshaw"
+ "en": "Usable for robust wheels: trekking bike, car, rickshaw"
}
},
{
"if": "smoothness=very_bad",
"then": {
- "en": "High Clearance: light duty off-road vehicle"
+ "en": "Usable for vehicles with high clearance: light duty off-road vehicle"
}
},
{
"if": "smoothness=horrible",
"then": {
- "en": "Off-Road: heavy duty off-road vehicle"
+ "en": "Usable for off-road vehicles: heavy duty off-road vehicle"
}
},
{
"if": "smoothness=very_horrible",
"then": {
- "en": "Specialized off-road: tractor, ATV"
+ "en": "Usable for specialized off-road vehicles: tractor, ATV"
}
},
{
@@ -391,11 +379,7 @@
"en": "Impassable / No wheeled vehicle"
}
}
- ],
- "question": {
- "en": "What is the smoothness of this street?",
- "nl": "Wat is de kwaliteit van deze straat?"
- }
+ ]
},
{
"render": {
From f83090ccfdcdd7ce5d238f7fe4845608630adabd Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 15 Jul 2021 09:33:28 +0200
Subject: [PATCH 22/71] Add hidden zebra answer
---
assets/layers/crossings/crossings.json | 32 ++++++++++++++++----------
1 file changed, 20 insertions(+), 12 deletions(-)
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
index 23cd1fee69..c2100883df 100644
--- a/assets/layers/crossings/crossings.json
+++ b/assets/layers/crossings/crossings.json
@@ -69,6 +69,14 @@
"en": "Crossing with traffic signals",
"nl": "Oversteekplaats met verkeerslichten"
}
+ },
+ {
+ "if": "crossing=zebra",
+ "then": {
+ "en": "Zebra crossing",
+ "nl": "Zebrapad"
+ },
+ "hideInAnswer": true
}
]
},
@@ -159,19 +167,19 @@
},
"mappings": [
{
- "if": "button_operated=yes",
- "then": {
- "en": "This traffic light has a button to request green light",
- "nl": "Dit verkeerslicht heeft een knop voor groen licht"
- }
- },
- {
- "if": "button_operated=no",
- "then": {
- "en": "This traffic light does not have a button to request green light",
- "nl": "Dit verkeerlicht heeft niet een knop voor groen licht"
- }
+ "if": "button_operated=yes",
+ "then": {
+ "en": "This traffic light has a button to request green light",
+ "nl": "Dit verkeerslicht heeft een knop voor groen licht"
}
+ },
+ {
+ "if": "button_operated=no",
+ "then": {
+ "en": "This traffic light does not have a button to request green light",
+ "nl": "Dit verkeerlicht heeft niet een knop voor groen licht"
+ }
+ }
]
}
]
From c1d94cfdeee046ebd6412843b07bf4731d6964ea Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 15 Jul 2021 10:06:56 +0200
Subject: [PATCH 23/71] Fix highway=path and cycleway=track not showing
---
assets/themes/cycle_infra/cycle_infra.json | 27 ++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 7fc345eca1..ed0595d419 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -35,7 +35,11 @@
"highway=cycleway",
"cycleway=shared_lane",
"cycleway=lane",
- "cyclestreet=yes"
+ "cycleway=track",
+ "cyclestreet=yes",
+ {
+ "and": ["highway=path", "bicycle=designated"]
+ }
]
}
},
@@ -46,7 +50,9 @@
},
"mappings": [
{
- "if": "highway=cycleway",
+ "if": {
+ "or": ["highway=cycleway", "highway=path"]
+ },
"then": {
"nl": "Fietsweg",
"en": "Bike road"
@@ -62,10 +68,17 @@
{
"if": "cycleway=lane",
"then": {
- "nl": "Fietsweg naast de weg",
+ "nl": "Fietsstrook",
"en": "Bike lane"
}
},
+ {
+ "if": "cycleway=track",
+ "then": {
+ "en": "Bike road next to the road",
+ "nl": "Fietsweg naast de weg"
+ }
+ },
{
"if": "cyclestreet=yes",
"then": {
@@ -447,9 +460,15 @@
"render": "#aaaaaa",
"mappings": [
{
- "if": "highway=cycleway",
+ "if": {
+ "or": ["highway=cycleway", "highway=path"]
+ },
"then": "#00ff00"
},
+ {
+ "if": "cycleway=track",
+ "then": "#45c445"
+ },
{
"if": "cycleway=shared_lane",
"then": "#ff0000"
From e0ae7e33bd393e17ad5da7f04804e620207dabb4 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 15 Jul 2021 10:13:44 +0200
Subject: [PATCH 24/71] Exclude highway=path
---
assets/themes/cycle_infra/cycle_infra.json | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index ed0595d419..6bb7c05a76 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -99,7 +99,9 @@
"en": "What kind of cycleway is there?",
"nl": "Wat voor fietspad is hier?"
},
- "condition": "highway!=cycleway",
+ "condition": {
+ "and": ["highway!=cycleway", "highway!=path"]
+ },
"mappings": [
{
"if": "cycleway=shared_lane",
@@ -536,7 +538,9 @@
"en": "Is there a cycleway?",
"nl": "Is er een fietspad?"
},
- "condition": "highway!=cycleway",
+ "condition": {
+ "and": ["highway!=cycleway", "highway!=path"]
+ },
"mappings": [
{
"if": "cycleway=shared_lane",
From b704a17191eddebece8c18942d064dd0c1185e52 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 15 Jul 2021 11:27:20 +0200
Subject: [PATCH 25/71] Include all cycleways
---
assets/themes/cycle_infra/cycle_infra.json | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 6bb7c05a76..0bba92c08f 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -33,9 +33,7 @@
"osmTags": {
"or": [
"highway=cycleway",
- "cycleway=shared_lane",
- "cycleway=lane",
- "cycleway=track",
+ "cycleway=^(?!no).*",
"cyclestreet=yes",
{
"and": ["highway=path", "bicycle=designated"]
From 1f0d8d13d0dd7380def6cf566fbb17799b118729 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 15 Jul 2021 11:37:12 +0200
Subject: [PATCH 26/71] Fix some conditions
---
assets/themes/cycle_infra/cycle_infra.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 0bba92c08f..01e5ffeae3 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -214,7 +214,7 @@
"addExtraTags": []
},
"condition": {
- "or": ["cycleway=shared_lane", "cycleway=lane"]
+ "or": ["cycleway=shared_lane", "cycleway=lane", "cycleway=track"]
},
"mappings": [
{
@@ -319,7 +319,7 @@
},
{
"condition": {
- "or": ["cycleway=shared_lane", "cycleway="]
+ "or": ["cycleway=shared_lane", "cycleway=no", "cycleway="]
},
"render": {
"en": "The carriage width of this road is {width:carriageway}m",
From a4076944ac62dca00fe5f80a2977dfd0b97fef28 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 15 Jul 2021 11:51:24 +0200
Subject: [PATCH 27/71] Re-arrange questions and add lit question
---
assets/themes/cycle_infra/cycle_infra.json | 143 +++++++++++++--------
1 file changed, 90 insertions(+), 53 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 01e5ffeae3..37fb20ebd9 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -150,6 +150,43 @@
"nl": "Onbekende fietspad situatie"
}
},
+ {
+ "question": {
+ "en": "Is this street lit?",
+ "nl": "Is deze weg verlicht?"
+ },
+ "mappings": [
+ {
+ "if": "lit=yes",
+ "then": {
+ "en": "This street is lit",
+ "nl": "Deze weg is verlicht"
+ }
+ },
+ {
+ "if": "lit=no",
+ "then": {
+ "en": "This road is not lit",
+ "nl": "Deze weg is niet verlicht"
+ }
+ },
+ {
+ "if": "lit=sunset-sunrise",
+ "then": {
+ "en": "This road is lit at night",
+ "nl": "Deze weg is 's nachts verlicht"
+ },
+ "hideInAnswer": true
+ },
+ {
+ "if": "lit=24/7",
+ "then": {
+ "en": "This road is lit 24/7",
+ "nl": "Deze weg is 24/7 verlicht"
+ }
+ }
+ ]
+ },
{
"render": {
"en": "The maximum speed on this road is {maxspeed} km/h",
@@ -318,21 +355,54 @@
]
},
{
- "condition": {
- "or": ["cycleway=shared_lane", "cycleway=no", "cycleway="]
- },
"render": {
- "en": "The carriage width of this road is {width:carriageway}m",
- "nl": "De breedte van deze rijbaan in deze straat is {width:carriageway}m"
+ "en": "This road is made of {surface}",
+ "nl": "Deze weg is gemaakt van {surface}"
},
"freeform": {
- "key": "width:carriageway",
- "addExtraTags": [],
- "type": "pfloat"
+ "key": "surface",
+ "addExtraTags": []
},
+ "mappings": [
+ {
+ "if": "surface=wood",
+ "then": {
+ "en": "This street is made of wood",
+ "nl": "Deze weg is gemaakt van hout"
+ }
+ },
+ {
+ "if": "surface=concrete",
+ "then": {
+ "en": "This street is made of concrete",
+ "nl": "Deze straat is gemaakt van beton"
+ }
+ },
+ {
+ "if": "surface=cobblestone",
+ "then": {
+ "en": "This street is made of cobblestone",
+ "nl": "Deze straat is gemaakt van kasseien"
+ }
+ },
+ {
+ "if": "surface=asphalt",
+ "then": {
+ "en": "This street is made of asphalt",
+ "nl": "Deze straat is gemaakt van asfalt"
+ }
+ },
+ {
+ "if": "surface=paved",
+ "then": {
+ "en": "This street is paved",
+ "nl": "Deze straat is geplaveid"
+ }
+ }
+ ],
"question": {
- "en": "What is the carriage width of this road (in meters)?",
- "nl": "Hoe breed is de rijbaan in deze straat (in meters)?"
+ "en": "What is the surface of the street made from?",
+ "nl": "Waaruit is het oppervlak van de straat gemaakt?"
}
},
{
@@ -395,54 +465,21 @@
]
},
{
+ "condition": {
+ "or": ["cycleway=shared_lane", "cycleway=no", "cycleway="]
+ },
"render": {
- "en": "This road is made of {surface}",
- "nl": "Deze weg is gemaakt van {surface}"
+ "en": "The carriage width of this road is {width:carriageway}m",
+ "nl": "De breedte van deze rijbaan in deze straat is {width:carriageway}m"
},
"freeform": {
- "key": "surface",
- "addExtraTags": []
+ "key": "width:carriageway",
+ "addExtraTags": [],
+ "type": "pfloat"
},
- "mappings": [
- {
- "if": "surface=wood",
- "then": {
- "en": "This street is made of wood",
- "nl": "Deze weg is gemaakt van hout"
- }
- },
- {
- "if": "surface=concrete",
- "then": {
- "en": "This street is made of concrete",
- "nl": "Deze straat is gemaakt van beton"
- }
- },
- {
- "if": "surface=cobblestone",
- "then": {
- "en": "This street is made of cobblestone",
- "nl": "Deze straat is gemaakt van kasseien"
- }
- },
- {
- "if": "surface=asphalt",
- "then": {
- "en": "This street is made of asphalt",
- "nl": "Deze straat is gemaakt van asfalt"
- }
- },
- {
- "if": "surface=paved",
- "then": {
- "en": "This street is paved",
- "nl": "Deze straat is geplaveid"
- }
- }
- ],
"question": {
- "en": "What is the surface of the street made from?",
- "nl": "Waaruit is het oppervlak van de straat gemaakt?"
+ "en": "What is the carriage width of this road (in meters)?",
+ "nl": "Hoe breed is de rijbaan in deze straat (in meters)?"
}
}
],
From 36ba81e26d072a9e65e63f7a0b5d372a37a537cd Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Fri, 16 Jul 2021 01:44:31 +0200
Subject: [PATCH 28/71] Enable download functionality
---
assets/themes/cycle_infra/cycle_infra.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 37fb20ebd9..53798cf07c 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -21,6 +21,7 @@
"startZoom": 11,
"widenFactor": 0.05,
"socialImage": "",
+ "enableDownload": true,
"layers": [
{
"id": "cycleways",
From 10f7305bf06228d54dc2fa412a1564dbe3f8645a Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Mon, 19 Jul 2021 13:12:18 +0200
Subject: [PATCH 29/71] Updated translations - Added presets for crossing
---
assets/layers/crossings/crossings.json | 45 +++-
assets/themes/cycle_infra/cycle_infra.json | 65 ++++-
langs/layers/en.json | 88 +++++++
langs/layers/nl.json | 88 +++++++
langs/themes/en.json | 283 +++++++++++++++++++++
langs/themes/nl.json | 231 +++++++++++++++++
6 files changed, 783 insertions(+), 17 deletions(-)
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
index c2100883df..874d55a81e 100644
--- a/assets/layers/crossings/crossings.json
+++ b/assets/layers/crossings/crossings.json
@@ -10,7 +10,10 @@
},
"source": {
"osmTags": {
- "or": ["highway=traffic_signals", "highway=crossing"]
+ "or": [
+ "highway=traffic_signals",
+ "highway=crossing"
+ ]
}
},
"minzoom": 14,
@@ -41,13 +44,44 @@
"mappings": [
{
"if": {
- "or": ["highway=traffic_signals", "crossing=traffic_signals"]
+ "or": [
+ "highway=traffic_signals",
+ "crossing=traffic_signals"
+ ]
},
"then": "./assets/layers/crossings/traffic_lights.svg"
}
]
},
"width": "5",
+ "presets": [
+ {
+ "title": {
+ "en": "Crossing",
+ "nl": "Oversteekplaats"
+ },
+ "tags": [
+ "highway=crossing"
+ ],
+ "description": {
+ "en": "Crossing for pedestrians and/or cyclists",
+ "nl": "Oversteekplaats voor voetgangers en/of fietsers"
+ }
+ },
+ {
+ "title": {
+ "en": "Traffic signal",
+ "nl": "Verkeerslicht"
+ },
+ "tags": [
+ "highway=traffic_signals"
+ ],
+ "description": {
+ "en": "Traffic signal on a road",
+ "nl": "Verkeerslicht op een weg"
+ }
+ }
+ ],
"tagRenderings": [
{
"question": {
@@ -163,7 +197,10 @@
"nl": "Heeft dit verkeerslicht een knop voor groen licht?"
},
"condition": {
- "or": ["highway=traffic_signals", "crossing=traffic_signals"]
+ "or": [
+ "highway=traffic_signals",
+ "crossing=traffic_signals"
+ ]
},
"mappings": [
{
@@ -183,4 +220,4 @@
]
}
]
-}
+}
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 53798cf07c..86bc140d28 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -12,7 +12,10 @@
"en": "A map where you can view and edit things related to the bicycle infrastructure made during osoc21.",
"nl": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken gemaakt tijdens osoc21."
},
- "language": ["en", "nl"],
+ "language": [
+ "en",
+ "nl"
+ ],
"maintainer": "",
"icon": "./assets/svg/cycle-infra.svg",
"version": "0",
@@ -37,7 +40,10 @@
"cycleway=^(?!no).*",
"cyclestreet=yes",
{
- "and": ["highway=path", "bicycle=designated"]
+ "and": [
+ "highway=path",
+ "bicycle=designated"
+ ]
}
]
}
@@ -50,7 +56,10 @@
"mappings": [
{
"if": {
- "or": ["highway=cycleway", "highway=path"]
+ "or": [
+ "highway=cycleway",
+ "highway=path"
+ ]
},
"then": {
"nl": "Fietsweg",
@@ -99,7 +108,10 @@
"nl": "Wat voor fietspad is hier?"
},
"condition": {
- "and": ["highway!=cycleway", "highway!=path"]
+ "and": [
+ "highway!=cycleway",
+ "highway!=path"
+ ]
},
"mappings": [
{
@@ -198,7 +210,10 @@
"addExtraTags": []
},
"condition": {
- "or": ["cycleway=shared_lane", "cycleway=lane"]
+ "or": [
+ "cycleway=shared_lane",
+ "cycleway=lane"
+ ]
},
"mappings": [
{
@@ -252,7 +267,11 @@
"addExtraTags": []
},
"condition": {
- "or": ["cycleway=shared_lane", "cycleway=lane", "cycleway=track"]
+ "or": [
+ "cycleway=shared_lane",
+ "cycleway=lane",
+ "cycleway=track"
+ ]
},
"mappings": [
{
@@ -302,7 +321,11 @@
"nl": "Wat is de kwaliteit van dit fietspad?"
},
"condition": {
- "or": ["cycleway=shared_lane", "cycleway=lane", "cycleway=track"]
+ "or": [
+ "cycleway=shared_lane",
+ "cycleway=lane",
+ "cycleway=track"
+ ]
},
"mappings": [
{
@@ -412,7 +435,10 @@
"nl": "Wat is de kwaliteit van deze straat?"
},
"condition": {
- "or": ["cycleway=no", "highway=cycleway"]
+ "or": [
+ "cycleway=no",
+ "highway=cycleway"
+ ]
},
"mappings": [
{
@@ -467,7 +493,11 @@
},
{
"condition": {
- "or": ["cycleway=shared_lane", "cycleway=no", "cycleway="]
+ "or": [
+ "cycleway=shared_lane",
+ "cycleway=no",
+ "cycleway="
+ ]
},
"render": {
"en": "The carriage width of this road is {width:carriageway}m",
@@ -499,7 +529,10 @@
"mappings": [
{
"if": {
- "or": ["highway=cycleway", "highway=path"]
+ "or": [
+ "highway=cycleway",
+ "highway=path"
+ ]
},
"then": "#00ff00"
},
@@ -575,7 +608,10 @@
"nl": "Is er een fietspad?"
},
"condition": {
- "and": ["highway!=cycleway", "highway!=path"]
+ "and": [
+ "highway!=cycleway",
+ "highway!=path"
+ ]
},
"mappings": [
{
@@ -641,7 +677,10 @@
},
"source": {
"osmTags": {
- "or": ["barrier=bollard", "barrier=cycle_barrier"]
+ "or": [
+ "barrier=bollard",
+ "barrier=cycle_barrier"
+ ]
}
},
"minzoom": 14,
@@ -754,4 +793,4 @@
},
"crossings"
]
-}
+}
\ No newline at end of file
diff --git a/langs/layers/en.json b/langs/layers/en.json
index 24a6bfac60..04122f5b79 100644
--- a/langs/layers/en.json
+++ b/langs/layers/en.json
@@ -690,6 +690,94 @@
}
}
},
+ "crossings": {
+ "name": "Crossings",
+ "description": "Crossings for pedestrians and cyclists",
+ "title": {
+ "render": "Crossing",
+ "mappings": {
+ "0": {
+ "then": "Traffic signal"
+ },
+ "1": {
+ "then": "Crossing with traffic signals"
+ }
+ }
+ },
+ "presets": {
+ "0": {
+ "title": "Crossing",
+ "description": "Crossing for pedestrians and/or cyclists"
+ },
+ "1": {
+ "title": "Traffic signal",
+ "description": "Traffic signal on a road"
+ }
+ },
+ "tagRenderings": {
+ "0": {
+ "question": "What kind of crossing is this?",
+ "mappings": {
+ "0": {
+ "then": "Crossing, without traffic lights"
+ },
+ "1": {
+ "then": "Crossing with traffic signals"
+ },
+ "2": {
+ "then": "Zebra crossing"
+ }
+ }
+ },
+ "1": {
+ "question": "Is this crossing also for bicycles?",
+ "mappings": {
+ "0": {
+ "then": "A cyclist can use this crossing"
+ },
+ "1": {
+ "then": "A cyclist can not use this crossing"
+ }
+ }
+ },
+ "2": {
+ "question": "Does this crossing have an island in the middle?",
+ "mappings": {
+ "0": {
+ "then": "This crossing has an island in the middle"
+ },
+ "1": {
+ "then": "This crossing does not have an island in the middle"
+ }
+ }
+ },
+ "3": {
+ "question": "Does this crossing have tactile paving?",
+ "mappings": {
+ "0": {
+ "then": "This crossing has tactile paving"
+ },
+ "1": {
+ "then": "This crossing does not have tactile paving"
+ },
+ "2": {
+ "then": "This crossing has tactile paving, but is not correct"
+ }
+ }
+ },
+ "4": {
+ "question": "Does this traffic light have a button to request green light?",
+ "mappings": {
+ "0": {
+ "then": "This traffic light has a button to request green light"
+ },
+ "1": {
+ "then": "This traffic light does not have a button to request green light"
+ }
+ }
+ }
+ }
+ },
"defibrillator": {
"name": "Defibrillators",
"title": {
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index ca4156d911..72d5473261 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -772,6 +772,94 @@
}
}
},
+ "crossings": {
+ "name": "Oversteekplaatsen",
+ "description": "Oversteekplaatsen voor voetgangers en fietsers",
+ "title": {
+ "render": "Oversteekplaats",
+ "mappings": {
+ "0": {
+ "then": "Verkeerslicht"
+ },
+ "1": {
+ "then": "Oversteektplaats met verkeerslichten"
+ }
+ }
+ },
+ "presets": {
+ "0": {
+ "title": "Oversteekplaats",
+ "description": "Oversteekplaats voor voetgangers en/of fietsers"
+ },
+ "1": {
+ "title": "Verkeerslicht",
+ "description": "Verkeerslicht op een weg"
+ }
+ },
+ "tagRenderings": {
+ "0": {
+ "question": "Wat voor oversteekplaats is dit?",
+ "mappings": {
+ "0": {
+ "then": "Oversteekplaats, zonder verkeerslichten"
+ },
+ "1": {
+ "then": "Oversteekplaats met verkeerslichten"
+ },
+ "2": {
+ "then": "Zebrapad"
+ }
+ }
+ },
+ "1": {
+ "question": "Is deze oversteekplaats ook voor fietsers",
+ "mappings": {
+ "0": {
+ "then": "Een fietser kan deze oversteekplaats gebruiken"
+ },
+ "1": {
+ "then": "Een fietser kan niet deze oversteekplaats gebruiken"
+ }
+ }
+ },
+ "2": {
+ "question": "Heeft deze oversteekplaats een verkeerseiland in het midden?",
+ "mappings": {
+ "0": {
+ "then": "Deze oversteekplaats heeft een verkeerseiland in het midden"
+ },
+ "1": {
+ "then": "Deze oversteekplaats heeft niet een verkeerseiland in het midden"
+ }
+ }
+ },
+ "3": {
+ "question": "Heeft deze oversteekplaats een geleidelijn?",
+ "mappings": {
+ "0": {
+ "then": "Deze oversteekplaats heeft een geleidelijn"
+ },
+ "1": {
+ "then": "Deze oversteekplaats heeft niet een geleidelijn"
+ },
+ "2": {
+ "then": "Deze oversteekplaats heeft een geleidelijn, die incorrect is."
+ }
+ }
+ },
+ "4": {
+ "question": "Heeft dit verkeerslicht een knop voor groen licht?",
+ "mappings": {
+ "0": {
+ "then": "Dit verkeerslicht heeft een knop voor groen licht"
+ },
+ "1": {
+ "then": "Dit verkeerlicht heeft niet een knop voor groen licht"
+ }
+ }
+ }
+ }
+ },
"defibrillator": {
"name": "Defibrillatoren",
"title": {
diff --git a/langs/themes/en.json b/langs/themes/en.json
index f5db488b97..070077cc44 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -692,6 +692,289 @@
}
}
},
+ "cycle_infra": {
+ "title": "Bicycle infrastructure",
+ "shortDescription": "A map where you can view and edit things related to the bicycle infrastructure.",
+ "description": "A map where you can view and edit things related to the bicycle infrastructure made during osoc21.",
+ "layers": {
+ "0": {
+ "name": "Cycleways",
+ "title": {
+ "render": "Cycleways",
+ "mappings": {
+ "0": {
+ "then": "Bike road"
+ },
+ "1": {
+ "then": "Shared lane"
+ },
+ "2": {
+ "then": "Bike lane"
+ },
+ "3": {
+ "then": "Bike road next to the road"
+ },
+ "4": {
+ "then": "Cyclestreet"
+ }
+ }
+ },
+ "tagRenderings": {
+ "0": {
+ "question": "What kind of cycleway is there?",
+ "mappings": {
+ "0": {
+ "then": "There is a shared lane"
+ },
+ "1": {
+ "then": "There is a lane next to the road (seperated with paint)"
+ },
+ "2": {
+ "then": "There is a track, but no cycleway drawn seperately from this road on the map."
+ },
+ "3": {
+ "then": "There is a seperately drawn cycleway"
+ },
+ "4": {
+ "then": "This is a cyclestreet."
+ },
+ "5": {
+ "then": "There is no cycleway"
+ }
+ },
+ "render": "Unknown cycleway situation"
+ },
+ "1": {
+ "question": "Is this street lit?",
+ "mappings": {
+ "0": {
+ "then": "This street is lit"
+ },
+ "1": {
+ "then": "This road is not lit"
+ },
+ "2": {
+ "then": "This road is lit at night"
+ },
+ "3": {
+ "then": "This road is lit 24/7"
+ }
+ }
+ },
+ "2": {
+ "render": "The maximum speed on this road is {maxspeed} km/h",
+ "mappings": {
+ "0": {
+ "then": "The maximum speed is 20 km/h"
+ },
+ "1": {
+ "then": "The maximum speed is 30 km/h"
+ },
+ "2": {
+ "then": "The maximum speed is 50 km/h"
+ },
+ "3": {
+ "then": "The maximum speed is 70 km/h"
+ },
+ "4": {
+ "then": "The maximum speed is 90 km/h"
+ }
+ },
+ "question": "What is the maximum speed in this street?"
+ },
+ "3": {
+ "render": "This cyleway is made of {cycleway:surface}",
+ "mappings": {
+ "0": {
+ "then": "This street is made of wood"
+ },
+ "1": {
+ "then": "This street is made of concrete"
+ },
+ "2": {
+ "then": "This street is made of cobblestone"
+ },
+ "3": {
+ "then": "This street is made of asphalt"
+ },
+ "4": {
+ "then": "This street is paved"
+ }
+ },
+ "question": "What is the cycleway:surface of the street made from?"
+ },
+ "4": {
+ "question": "What is the smoothness of this cycleway?",
+ "mappings": {
+ "0": {
+ "then": "Usable for thin rollers: rollerblade, skateboard"
+ },
+ "1": {
+ "then": "Usable for thin wheels: racing bike"
+ },
+ "2": {
+ "then": "Usable for normal wheels: city bike, wheelchair, scooter"
+ },
+ "3": {
+ "then": "Usable for robust wheels: trekking bike, car, rickshaw"
+ },
+ "4": {
+ "then": "Usable for vehicles with high clearance: light duty off-road vehicle"
+ },
+ "5": {
+ "then": "Usable for off-road vehicles: heavy duty off-road vehicle"
+ },
+ "6": {
+ "then": "Usable for specialized off-road vehicles: tractor, ATV"
+ },
+ "7": {
+ "then": "Impassable / No wheeled vehicle"
+ }
+ }
+ },
+ "5": {
+ "render": "This road is made of {surface}",
+ "mappings": {
+ "0": {
+ "then": "This street is made of wood"
+ },
+ "1": {
+ "then": "This street is made of concrete"
+ },
+ "2": {
+ "then": "This street is made of cobblestone"
+ },
+ "3": {
+ "then": "This street is made of asphalt"
+ },
+ "4": {
+ "then": "This street is paved"
+ }
+ },
+ "question": "What is the surface of the street made from?"
+ },
+ "6": {
+ "question": "What is the smoothness of this street?",
+ "mappings": {
+ "0": {
+ "then": "Usable for thin rollers: rollerblade, skateboard"
+ },
+ "1": {
+ "then": "Usable for thin wheels: racing bike"
+ },
+ "2": {
+ "then": "Usable for normal wheels: city bike, wheelchair, scooter"
+ },
+ "3": {
+ "then": "Usable for robust wheels: trekking bike, car, rickshaw"
+ },
+ "4": {
+ "then": "Usable for vehicles with high clearance: light duty off-road vehicle"
+ },
+ "5": {
+ "then": "Usable for off-road vehicles: heavy duty off-road vehicle"
+ },
+ "6": {
+ "then": "Usable for specialized off-road vehicles: tractor, ATV"
+ },
+ "7": {
+ "then": "Impassable / No wheeled vehicle"
+ }
+ }
+ },
+ "7": {
+ "render": "The carriage width of this road is {width:carriageway}m",
+ "question": "What is the carriage width of this road (in meters)?"
+ }
+ }
+ },
+ "1": {
+ "name": "All streets",
+ "description": "Layer to mark new cycleways",
+ "title": {
+ "render": "Street"
+ },
+ "tagRenderings": {
+ "0": {
+ "question": "Is there a cycleway?",
+ "mappings": {
+ "0": {
+ "then": "There is a shared lane"
+ },
+ "1": {
+ "then": "There is a lane next to the road (seperated with paint)"
+ },
+ "2": {
+ "then": "There is a track, but no cycleway drawn seperately from this road on the map."
+ },
+ "3": {
+ "then": "There is a seperately drawn cycleway"
+ },
+ "4": {
+ "then": "This is a cyclestreet."
+ },
+ "5": {
+ "then": "There is no cycleway"
+ }
+ },
+ "render": "Unknown cycleway situation"
+ }
+ }
+ },
+ "2": {
+ "name": "Barriers",
+ "description": "Obstacles while cycling, such as bollards and cycle barriers",
+ "title": {
+ "render": "Barrier",
+ "mappings": {
+ "0": {
+ "then": "Bollard"
+ },
+ "1": {
+ "then": "Cycling Barrier"
+ }
+ }
+ },
+ "tagRenderings": {
+ "0": {
+ "question": "Can a bicycle go past this barrier?",
+ "mappings": {
+ "0": {
+ "then": "A cyclist can go past this."
+ },
+ "1": {
+ "then": "A cyclist can not go past this."
+ }
+ }
+ },
+ "1": {
+ "question": "What kind of bollard is this?",
+ "mappings": {
+ "0": {
+ "then": "Removable bollard"
+ },
+ "1": {
+ "then": "Fixed bollard"
+ },
+ "2": {
+ "then": "Bollard that can be folded down"
+ },
+ "3": {
+ "then": "Flexible bollard, usually plastic"
+ },
+ "4": {
+ "then": "Rising bollard"
+ }
+ }
+ },
+ "2": {
+ "render": "Maximum width: {maxwidth:physical} m",
+ "question": "How wide is the gap left over besides the barrier?"
+ }
+ }
+ }
+ }
+ },
"fietsstraten": {
"title": "Cyclestreets",
"shortDescription": "A map of cyclestreets",
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index 44bf09b5f4..83d4e63e4e 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -548,6 +548,237 @@
}
}
},
+ "cycle_infra": {
+ "title": "Fietsinfrastructuur",
+ "shortDescription": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken.",
+ "description": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken gemaakt tijdens osoc21.",
+ "layers": {
+ "0": {
+ "name": "Fietspaden",
+ "title": {
+ "render": "Fietspaden",
+ "mappings": {
+ "0": {
+ "then": "Fietsweg"
+ },
+ "1": {
+ "then": "Fietssuggestiestrook"
+ },
+ "2": {
+ "then": "Fietsstrook"
+ },
+ "3": {
+ "then": "Fietsweg naast de weg"
+ },
+ "4": {
+ "then": "Fietsstraat"
+ }
+ }
+ },
+ "tagRenderings": {
+ "0": {
+ "question": "Wat voor fietspad is hier?",
+ "mappings": {
+ "0": {
+ "then": "Er is een fietssugestiestrook"
+ },
+ "1": {
+ "then": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)"
+ },
+ "2": {
+ "then": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg."
+ },
+ "3": {
+ "then": "Er is een apart getekend fietspad."
+ },
+ "4": {
+ "then": "Dit is een fietsstraat."
+ },
+ "5": {
+ "then": "Er is geen fietspad"
+ }
+ },
+ "render": "Onbekende fietspad situatie"
+ },
+ "1": {
+ "question": "Is deze weg verlicht?",
+ "mappings": {
+ "0": {
+ "then": "Deze weg is verlicht"
+ },
+ "1": {
+ "then": "Deze weg is niet verlicht"
+ },
+ "2": {
+ "then": "Deze weg is 's nachts verlicht"
+ },
+ "3": {
+ "then": "Deze weg is 24/7 verlicht"
+ }
+ }
+ },
+ "2": {
+ "render": "De maximumsnelheid op deze weg is {maxspeed} km/u",
+ "mappings": {
+ "0": {
+ "then": "De maximumsnelheid is 20 km/u"
+ },
+ "1": {
+ "then": "De maximumsnelheid is 30 km/u"
+ },
+ "2": {
+ "then": "De maximumsnelheid is 50 km/u"
+ },
+ "3": {
+ "then": "De maximumsnelheid is 70 km/u"
+ },
+ "4": {
+ "then": "De maximumsnelheid is 90 km/u"
+ }
+ },
+ "question": "Wat is de maximumsnelheid in deze straat?"
+ },
+ "3": {
+ "render": "Dit fietspad is gemaakt van {cycleway:surface}",
+ "mappings": {
+ "0": {
+ "then": "Deze weg is gemaakt van hout"
+ },
+ "1": {
+ "then": "Deze straat is gemaakt van beton"
+ },
+ "2": {
+ "then": "Deze straat is gemaakt van kasseien"
+ },
+ "3": {
+ "then": "Deze straat is gemaakt van asfalt"
+ },
+ "4": {
+ "then": "Deze straat is geplaveid"
+ }
+ },
+ "question": "Waaruit is het oppervlak van de straat gemaakt?"
+ },
+ "4": {
+ "question": "Wat is de kwaliteit van dit fietspad?"
+ },
+ "5": {
+ "render": "Deze weg is gemaakt van {surface}",
+ "mappings": {
+ "0": {
+ "then": "Deze weg is gemaakt van hout"
+ },
+ "1": {
+ "then": "Deze straat is gemaakt van beton"
+ },
+ "2": {
+ "then": "Deze straat is gemaakt van kasseien"
+ },
+ "3": {
+ "then": "Deze straat is gemaakt van asfalt"
+ },
+ "4": {
+ "then": "Deze straat is geplaveid"
+ }
+ },
+ "question": "Waaruit is het oppervlak van de straat gemaakt?"
+ },
+ "6": {
+ "question": "Wat is de kwaliteit van deze straat?"
+ },
+ "7": {
+ "render": "De breedte van deze rijbaan in deze straat is {width:carriageway}m",
+ "question": "Hoe breed is de rijbaan in deze straat (in meters)?"
+ }
+ }
+ },
+ "1": {
+ "name": "Alle straten",
+ "description": "Laag waar je nieuwe fietspaden kan aanduiden",
+ "title": {
+ "render": "Straat"
+ },
+ "tagRenderings": {
+ "0": {
+ "question": "Is er een fietspad?",
+ "mappings": {
+ "0": {
+ "then": "Er is een fietssugestiestrook"
+ },
+ "1": {
+ "then": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)"
+ },
+ "2": {
+ "then": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg."
+ },
+ "3": {
+ "then": "Er is een apart getekend fietspad."
+ },
+ "4": {
+ "then": "Dit is een fietsstraat."
+ },
+ "5": {
+ "then": "Er is geen fietspad"
+ }
+ },
+ "render": "Onbekende fietspad situatie"
+ }
+ }
+ },
+ "2": {
+ "name": "Barrières",
+ "description": "Hindernissen tijdens het fietsen, zoals paaltjes en fietshekjes",
+ "title": {
+ "render": "Barrière",
+ "mappings": {
+ "0": {
+ "then": "Paaltje"
+ },
+ "1": {
+ "then": "Fietshekjes"
+ }
+ }
+ },
+ "tagRenderings": {
+ "0": {
+ "question": "Kan een fietser langs deze barrière?",
+ "mappings": {
+ "0": {
+ "then": "Een fietser kan hier langs."
+ },
+ "1": {
+ "then": "Een fietser kan hier niet langs."
+ }
+ }
+ },
+ "1": {
+ "question": "Wat voor soort paal is dit?",
+ "mappings": {
+ "0": {
+ "then": "Verwijderbare paal"
+ },
+ "1": {
+ "then": "Vaste paal"
+ },
+ "2": {
+ "then": "Paal die platgevouwen kan worden"
+ },
+ "3": {
+ "then": "Flexibele paal, meestal plastic"
+ },
+ "4": {
+ "then": "Verzonken poller"
+ }
+ }
+ },
+ "2": {
+ "render": "Maximumbreedte: {maxwidth:physical} m",
+ "question": "Hoe breed is de ruimte naast de barrière?"
+ }
+ }
+ }
+ }
+ },
"fietsstraten": {
"title": "Fietsstraten",
"shortDescription": "Een kaart met alle gekende fietsstraten",
From 5d875e52339009b28a3f45c766023f4a6c67f020 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Mon, 19 Jul 2021 13:59:40 +0200
Subject: [PATCH 30/71] Added red turn question
---
assets/layers/crossings/crossings.json | 25 +++++++++++++++++++++++++
langs/layers/en.json | 11 +++++++++++
langs/layers/nl.json | 11 +++++++++++
3 files changed, 47 insertions(+)
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
index 874d55a81e..2915435857 100644
--- a/assets/layers/crossings/crossings.json
+++ b/assets/layers/crossings/crossings.json
@@ -218,6 +218,31 @@
}
}
]
+ },
+ {
+ "question": {
+ "en": "Can a cyclist turn right when the light is red?",
+ "nl": "Mag een fietser rechtsaf slaan als het licht rood is?"
+ },
+ "condition": [
+ "highway=traffic_signals"
+ ],
+ "mappings": [
+ {
+ "if": "red_turn:right:bicycle=yes",
+ "then": {
+ "en": "A cyclist can turn right if the light is red",
+ "nl": "Een fietser mag niet rechtsaf slaan als het licht rood is"
+ }
+ },
+ {
+ "if": "red_turn:right:bicycle=no",
+ "then": {
+ "en": "A cyclist can not turn right if the light is red",
+ "nl": "Een fietser mag rechtsaf slaan als het licht rood is"
+ }
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/langs/layers/en.json b/langs/layers/en.json
index 04122f5b79..afae48ada7 100644
--- a/langs/layers/en.json
+++ b/langs/layers/en.json
@@ -775,6 +775,17 @@
"then": "This traffic light does not have a button to request green light"
}
}
+ },
+ "5": {
+ "question": "Can a cyclist turn right when the light is red?",
+ "mappings": {
+ "0": {
+ "then": "A cyclist can turn right if the light is red"
+ },
+ "1": {
+ "then": "A cyclist can not turn right if the light is red"
+ }
+ }
}
}
},
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index 72d5473261..87545a440b 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -857,6 +857,17 @@
"then": "Dit verkeerlicht heeft niet een knop voor groen licht"
}
}
+ },
+ "5": {
+ "question": "Mag een fietser rechtsaf slaan als het licht rood is?",
+ "mappings": {
+ "0": {
+ "then": "Een fietser mag niet rechtsaf slaan als het licht rood is"
+ },
+ "1": {
+ "then": "Een fietser mag rechtsaf slaan als het licht rood is"
+ }
+ }
}
}
},
From bdbf874c63d737a5c753bbfb50ba46ed6d5cc95c Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Mon, 19 Jul 2021 14:00:23 +0200
Subject: [PATCH 31/71] Added presets and cycle_barrier type
---
assets/themes/cycle_infra/cycle_infra.json | 64 ++++++++++++++++++++++
langs/themes/en.json | 24 ++++++++
langs/themes/nl.json | 24 ++++++++
3 files changed, 112 insertions(+)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 86bc140d28..adb47c1689 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -708,6 +708,34 @@
},
"icon": "./assets/svg/barrier.svg",
"width": "5",
+ "presets": [
+ {
+ "title": {
+ "en": "Bollard",
+ "nl": "Paaltje"
+ },
+ "tags": [
+ "barrier=bollard"
+ ],
+ "description": {
+ "en": "A bollard in the road",
+ "nl": "Een paaltje in de weg"
+ }
+ },
+ {
+ "title": {
+ "en": "Cycle barrier",
+ "nl": "Fietshekjes"
+ },
+ "tags": [
+ "barrier=bollard"
+ ],
+ "description": {
+ "en": "Cycle barrier, slowing down cyclists",
+ "nl": "Fietshekjes, voor het afremmen van fietsers"
+ }
+ }
+ ],
"tagRenderings": [
{
"question": {
@@ -775,6 +803,36 @@
}
]
},
+ {
+ "question": {
+ "en": "What kind of cycling barrier is this?",
+ "nl": "Wat voor fietshekjes zijn dit?"
+ },
+ "condition": "barrier=cycle_barrier",
+ "mappings": [
+ {
+ "if": "cycle_barrier:type=single",
+ "then": {
+ "en": "Single, just two barriers with a space inbetween",
+ "nl": "Enkelvoudig, slechts twee hekjes met ruimte ertussen"
+ }
+ },
+ {
+ "if": "cycle_barrier:type=double",
+ "then": {
+ "en": "Double, two barriers behind each other",
+ "nl": "Dubbel, twee hekjes achter elkaar"
+ }
+ },
+ {
+ "if": "cycle_barrier:type=triple",
+ "then": {
+ "en": "Triple, three barier behind each other",
+ "nl": "Drievoudig, drie hekjes achter elkaar"
+ }
+ }
+ ]
+ },
{
"render": {
"en": "Maximum width: {maxwidth:physical} m",
@@ -784,6 +842,12 @@
"en": "How wide is the gap left over besides the barrier?",
"nl": "Hoe breed is de ruimte naast de barrière?"
},
+ "condition": {
+ "and": [
+ "cycle_barrier:type!=double",
+ "cycle_barrier:type!=triple"
+ ]
+ },
"freeform": {
"key": "maxwidth:physical",
"type": "pfloat"
diff --git a/langs/themes/en.json b/langs/themes/en.json
index 070077cc44..25e46f9aee 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -935,6 +935,16 @@
}
}
},
+ "presets": {
+ "0": {
+ "title": "Bollard",
+ "description": "A bollard in the road"
+ },
+ "1": {
+ "title": "Cycle barrier",
+ "description": "Cycle barrier, slowing down cyclists"
+ }
+ },
"tagRenderings": {
"0": {
"question": "Can a bicycle go past this barrier?",
@@ -968,6 +978,20 @@
}
},
"2": {
+ "question": "What kind of cycling barrier is this?",
+ "mappings": {
+ "0": {
+ "then": "Single, just two barriers with a space inbetween"
+ },
+ "1": {
+ "then": "Double, two barriers behind each other"
+ },
+ "2": {
+ "then": "Triple, three barier behind each other"
+ }
+ }
+ },
+ "3": {
"render": "Maximum width: {maxwidth:physical} m",
"question": "How wide is the gap left over besides the barrier?"
}
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index 83d4e63e4e..bb7e3ad5a6 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -739,6 +739,16 @@
}
}
},
+ "presets": {
+ "0": {
+ "title": "Paaltje",
+ "description": "Een paaltje in de weg"
+ },
+ "1": {
+ "title": "Fietshekjes",
+ "description": "Fietshekjes, voor het afremmen van fietsers"
+ }
+ },
"tagRenderings": {
"0": {
"question": "Kan een fietser langs deze barrière?",
@@ -772,6 +782,20 @@
}
},
"2": {
+ "question": "Wat voor fietshekjes zijn dit?",
+ "mappings": {
+ "0": {
+ "then": "Enkelvoudig, slechts twee hekjes met ruimte ertussen"
+ },
+ "1": {
+ "then": "Dubbel, twee hekjes achter elkaar"
+ },
+ "2": {
+ "then": "Drievoudig, drie hekjes achter elkaar"
+ }
+ }
+ },
+ "3": {
"render": "Maximumbreedte: {maxwidth:physical} m",
"question": "Hoe breed is de ruimte naast de barrière?"
}
From 3c29798b9668732e54263b4999cd3a799a50227d Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Mon, 19 Jul 2021 14:24:41 +0200
Subject: [PATCH 32/71] Fix build, removed question
---
assets/layers/crossings/crossings.json | 25 -------------------------
langs/layers/en.json | 11 -----------
langs/layers/nl.json | 11 -----------
3 files changed, 47 deletions(-)
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
index 2915435857..874d55a81e 100644
--- a/assets/layers/crossings/crossings.json
+++ b/assets/layers/crossings/crossings.json
@@ -218,31 +218,6 @@
}
}
]
- },
- {
- "question": {
- "en": "Can a cyclist turn right when the light is red?",
- "nl": "Mag een fietser rechtsaf slaan als het licht rood is?"
- },
- "condition": [
- "highway=traffic_signals"
- ],
- "mappings": [
- {
- "if": "red_turn:right:bicycle=yes",
- "then": {
- "en": "A cyclist can turn right if the light is red",
- "nl": "Een fietser mag niet rechtsaf slaan als het licht rood is"
- }
- },
- {
- "if": "red_turn:right:bicycle=no",
- "then": {
- "en": "A cyclist can not turn right if the light is red",
- "nl": "Een fietser mag rechtsaf slaan als het licht rood is"
- }
- }
- ]
}
]
}
\ No newline at end of file
diff --git a/langs/layers/en.json b/langs/layers/en.json
index afae48ada7..04122f5b79 100644
--- a/langs/layers/en.json
+++ b/langs/layers/en.json
@@ -775,17 +775,6 @@
"then": "This traffic light does not have a button to request green light"
}
}
- },
- "5": {
- "question": "Can a cyclist turn right when the light is red?",
- "mappings": {
- "0": {
- "then": "A cyclist can turn right if the light is red"
- },
- "1": {
- "then": "A cyclist can not turn right if the light is red"
- }
- }
}
}
},
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index 87545a440b..72d5473261 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -857,17 +857,6 @@
"then": "Dit verkeerlicht heeft niet een knop voor groen licht"
}
}
- },
- "5": {
- "question": "Mag een fietser rechtsaf slaan als het licht rood is?",
- "mappings": {
- "0": {
- "then": "Een fietser mag niet rechtsaf slaan als het licht rood is"
- },
- "1": {
- "then": "Een fietser mag rechtsaf slaan als het licht rood is"
- }
- }
}
}
},
From da7faf0a8fe2a13d50f6f8b512a5dc638ec89dd5 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Mon, 19 Jul 2021 16:07:30 +0200
Subject: [PATCH 33/71] Added cycle_barrier type, red turn
---
assets/layers/crossings/crossings.json | 23 ++++++++
.../cycle_infra/Cycle_barrier_double.png | Bin 0 -> 1483 bytes
.../cycle_infra/Cycle_barrier_single.png | Bin 0 -> 1281 bytes
.../cycle_infra/Cycle_barrier_squeeze.png | Bin 0 -> 1911 bytes
.../cycle_infra/Cycle_barrier_triple.png | Bin 0 -> 1725 bytes
assets/themes/cycle_infra/cycle_infra.json | 18 ++++--
assets/themes/cycle_infra/license_info.json | 52 ++++++++++++++++++
langs/layers/en.json | 11 ++++
langs/layers/nl.json | 11 ++++
langs/themes/en.json | 9 ++-
langs/themes/nl.json | 6 +-
11 files changed, 118 insertions(+), 12 deletions(-)
create mode 100644 assets/themes/cycle_infra/Cycle_barrier_double.png
create mode 100644 assets/themes/cycle_infra/Cycle_barrier_single.png
create mode 100644 assets/themes/cycle_infra/Cycle_barrier_squeeze.png
create mode 100644 assets/themes/cycle_infra/Cycle_barrier_triple.png
create mode 100644 assets/themes/cycle_infra/license_info.json
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
index 874d55a81e..4521e57d9d 100644
--- a/assets/layers/crossings/crossings.json
+++ b/assets/layers/crossings/crossings.json
@@ -218,6 +218,29 @@
}
}
]
+ },
+ {
+ "question": {
+ "en": "Can a cyclist turn right when the light is red?",
+ "nl": "Mag een fietser rechtsaf slaan als het licht rood is?"
+ },
+ "condition": "highway=traffic_signals",
+ "mappings": [
+ {
+ "if": "red_turn:right:bicycle=yes",
+ "then": {
+ "en": "A cyclist can turn right if the light is red",
+ "nl": "Een fietser mag niet rechtsaf slaan als het licht rood is"
+ }
+ },
+ {
+ "if": "red_turn:right:bicycle=no",
+ "then": {
+ "en": "A cyclist can not turn right if the light is red",
+ "nl": "Een fietser mag rechtsaf slaan als het licht rood is"
+ }
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/Cycle_barrier_double.png b/assets/themes/cycle_infra/Cycle_barrier_double.png
new file mode 100644
index 0000000000000000000000000000000000000000..76b51a2e65b01190fca289c2c803c982402de530
GIT binary patch
literal 1483
zcmeAS@N?(olHy`uVBq!ia0y~yV9W$!W)3!>$aj&iML>!z$=lrpNCUx7=iT){inG8Y
zvY3HEPZ@+6E0)@q0R`DhJbhi+pR#canOidL;T2+FV2$u}aSW-r_4bxwMhLsafsgOI
zQcRje9Idz-Ly8pI1zw2g?$C&vmSE(%$JNSX!_p6JyQTTObQPU0KUI1zbVOBD-LX)M
z<5AK_AurizN3V~1$%8r^#f)6!BN-b!m=!KDDDfiE9VQSymQ+o!QI%H$To77t_gZ=##S+n?KiDJo)LSRE0~fSEC|2tmpdu
zx%K+!wf(Vo-bUSE=yf^Ld3*a}D`VksXB{c~)3+`r1dbw?f_7xdgDxqtndBQvwE%9<+0ntTrr-|P^-U(V2IQ|-EtQ|8LP
zK*jg&J)dj!_1k?F&&L;U&GIOIP*Gr^(p0tKS)=vKrdGHUPzn?tuk8JUTjKMTm~~63tceQoTPuzPnqobEjnV
zHA9=b@A~X}U0l*DE%nZxci*%l!(GW&@cn}Q@sXW%v));3-#0J+*pG^Rug~26y=QI5
zi*Hqhz_>qm{@kv`VwqjfF5bGeuJPVe|J_`U^
zv#w|T^w~9e*@km|{>MM9jlOyJ%Vc#yY3bj;r{3T5eg5?Tcj*0}S>mlG3rnApEx&Np${igjjEh0CJ8a@`a7^X;5=
zg}UGTdxiJ3E0lO|%6^U5nIp&?w*ERWdEd(AmQ>>BgT&xqj5(yVLOtg_X#ONF_fP&`
TX2szPpfcIh)z4*}Q$iB}1_mr@
literal 0
HcmV?d00001
diff --git a/assets/themes/cycle_infra/Cycle_barrier_single.png b/assets/themes/cycle_infra/Cycle_barrier_single.png
new file mode 100644
index 0000000000000000000000000000000000000000..ec957da7c54a12e348f0ba55aad06c351ece7358
GIT binary patch
literal 1281
zcmeAS@N?(olHy`uVBq!ia0y~yV9W$!W)3!>$aj&iML>!z$=lrpNCUx7=iT){inG8Y
zvY3HEPZ@+6E0)@q0R`DhJbhi+pR#caS%@6??Yn}3fu+yW#WAGf*4taQ9?^jk4G;B~
zT1YJvakPr!QWAABn#$+oSg>(&Ny&*z7fqcfDXvbQ&f~Xmhl?P~!bbsIjSnU%HC@@r
z5ybUsn%?&2r`MF0E>t~x|Fe!MGWk3#+FwI4ofl$YhwvhD5taLHJ-AD2bpUid>|S6vH%+YJ!F$EFjnd)jTI1F)F!#
zeDUIn?VE+;&z*n2r|eqJvd8Y5H!E+H<5yFEeDhL}&CJ=-9p9^OWgTt*`}apxp`p<4
z&p&@y$ofAoDvztTFcsAg3w!kPP*ZpG688AiTHAYhdB>KYKK&!jQb{REM`_vdT;NNoSy#j-{w8PKk9!@
zHJ({S9a;C(re7XGkzZUoZ{5gBxNwKrJYHz-B
zZNU0+nHP@t`uERVAGGu4{<~4WOLm`VKK#G*NucCf?usk_?4`FlY`?uO^SG>Y#ht*F
zE;@Su{_RMf(QncAb4T)(J`1Vd`0wWn+dcUI#cpA5FRv)D`0@Ms!G#|DcV)M(fAIH-
zcE#Vb;U8RPMSuEPW2HC!v{=hLZL#i`JEGP`O_2NaKwvbDf^#;BnKi+rhQ0U&bMj_s
R<7=Rj%+uA+Wt~$(699s7w-o>Y
literal 0
HcmV?d00001
diff --git a/assets/themes/cycle_infra/Cycle_barrier_squeeze.png b/assets/themes/cycle_infra/Cycle_barrier_squeeze.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5ba6c7ed2f6d7370fad440bde9338e20d1b1612
GIT binary patch
literal 1911
zcmeHI`BRfu6b*$27u;He5*Qf>n@d=f#jwTFSO`c^ih#%-#0FGMSV90nWsFrefdXUL
zbReV_35AG4;DbR)8Cgt07EJ=tB4G&uLMVj9B>mLslpp*L+V|$pnS18lxijb9Iq%j<
ztmlqxux$_sWCz9z?GJ%y;K9(`0tK0M-M@$+K%;#;(Gc~Adk>%&gUr^;US|>^5Nr5{
z&`71BQb1BW3FCWQdm6f3S4Zc9ZAd%FXkpOb2BdPue7h3?~kuOWdDWDu$qimIkWSxCc$>a3;ysljr5FnG3z=3h18a-R5Ax#EunlPs|n
z!5vo?`AE&?d{yig2pR?{gzm;~!eg}>AM;OG2;GDqAA|Y-MITiAtPpR$K4q&lQXg19
zEt%@QTUGU9VBo}}psN~j_Hiu$xY7LgBM^w!k1w9R&HmHU4J(yO$!iN|>ge$A=ew+Sf8cpJ!C_EvT%Zc*U
zxnxxH!@zoE=KIv|Jv~vgY2kTz5{X2mQvI!T9eX<9!y^PO<&tzpnh|A!A&NtqlSL~W
zUi*{IX+ft_p{PRnWy(wp_A!Lr8&agb?VbFv_QObI+ppI$%Z7%AjNH=f0RRxCpu_4%
z54*dox;2%&lYUri9XK+zVvcSuRk=%L?mV^)=2B1uryU+w7;7MiU_ENBc`;~S?qs8`
zpitzcN`^8^t%}Inxy$CA!l!J7)7aU^=kuwZYfVi}Mn^A4PMEr(P}N}K5H`c-hwAC+
zl@2JX@Aj_0w#HVbxhmo2bD`Me6Bz+lbyZ6aT3I&%Ekc+lQWsg!kN>LF7nBWsYXAN*;zx_
z%Ep_>+w5p(XXoLUFPRo}S5VvGi3xy_uupH>jU*C@-q@JnizTnFuGWH!$BrftCI!j%
z0N<67)ZUtc*pQ28(tIywE;#;;as7yQ?K%31#8&Ft)4{QBE@Gisx(`jq2-z&NNr;b+
zr%)(GF{2*9P~)Oii8nHRZ9yAgO`X1XlR_Eha;YBoe~XzEtoQnaw9q%vI47iy3R(gU<
z)l1$x?_2J8j#K4U&9~f{!;bEoCiYFQ6e&<6mOGvL!1c&Ld(-@(+S)I9JW;z#;5P|^
ziECcWSUQBuwg0~4JG3M
literal 0
HcmV?d00001
diff --git a/assets/themes/cycle_infra/Cycle_barrier_triple.png b/assets/themes/cycle_infra/Cycle_barrier_triple.png
new file mode 100644
index 0000000000000000000000000000000000000000..b64f30c4feb7c9ebf79ae10832bcf468d8a3948a
GIT binary patch
literal 1725
zcmeAS@N?(olHy`uVBq!ia0y~yV9W$!W)3!>$aj&iML>!z$=lrpNCUx7=iT){inG8Y
zvY3HEPZ@+6E0)@q0R`DhJbhi+pR#cand?fV-OLAS^zw9Z45_&F_LieZNTtkykN0&R
z8n&u3-AwL&(8g@YacJI}1>OteTx@$^s9Lpb@iu6e8McVrdM%Gh4`mW
zfBf~F-=_6+qc&G`@^H%w?5_z3yZC8+-F~FRkyE1)9O=YccVx8)hkC_Y$9TM
z_HWyk^gUQSKPO@XTUKX>@%Q)c{~sj8tPRoOP?~#G_RHIuGjI4!nlY>E#oOMD+`HEI
zZ_do~+dAu=)#pp+Z{O>y_+_#vd)Xz)($o}{y8XrKUQ7G80)7gSULIrd7Mn!k0uU`G}-(BnOiw^SF
zu4f-NcXxk%ZhlsNe|K%|#ZZk1or!9z--T*@EU2`Md;jLhx~CcQdV6>EM=2#0mYKD6
z9o6vlk5-GvK!f9rPS*tM`b^JaFQK76?B3NTCA
zL`GT~Twt#$SrDUlxAa-<%{^~bI*)sMEBzI%EI48A9MFG#&q~ejOXix)EKN*MND~*!
z+WqqRd1W*6{%_j*E9cwiXK5`8>B>0!^wFsk9nxV-PR{D9v0K;MdsR;6+ZUO)f3_GJ
my-%3Dv}69Q;gV5rJdgjxu=G~b-pGHTTFBGY&t;ucLK6T^w7-!6
literal 0
HcmV?d00001
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index adb47c1689..9f257b28e7 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -813,22 +813,28 @@
{
"if": "cycle_barrier:type=single",
"then": {
- "en": "Single, just two barriers with a space inbetween",
- "nl": "Enkelvoudig, slechts twee hekjes met ruimte ertussen"
+ "en": "Single, just two barriers with a space inbetween ",
+ "nl": "Enkelvoudig, slechts twee hekjes met ruimte ertussen "
}
},
{
"if": "cycle_barrier:type=double",
"then": {
- "en": "Double, two barriers behind each other",
- "nl": "Dubbel, twee hekjes achter elkaar"
+ "en": "Double, two barriers behind each other ",
+ "nl": "Dubbel, twee hekjes achter elkaar "
}
},
{
"if": "cycle_barrier:type=triple",
"then": {
- "en": "Triple, three barier behind each other",
- "nl": "Drievoudig, drie hekjes achter elkaar"
+ "en": "Triple, three barier behind each other ",
+ "nl": "Drievoudig, drie hekjes achter elkaar "
+ }
+ },
+ {
+ "if": "cycle_barrier:type=squeeze",
+ "then": {
+ "en": "Squeeze gate, gap is smaller at top, then at bottom "
}
}
]
diff --git a/assets/themes/cycle_infra/license_info.json b/assets/themes/cycle_infra/license_info.json
new file mode 100644
index 0000000000..9efa074568
--- /dev/null
+++ b/assets/themes/cycle_infra/license_info.json
@@ -0,0 +1,52 @@
+[
+ {
+ "authors": [
+ "Supaplex030"
+ ],
+ "path": "Cycle_barrier_single.png",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://wiki.openstreetmap.org/wiki/File:Cycle_barrier_single.png"
+ ]
+ },
+ {
+ "authors": [
+ "Supaplex030"
+ ],
+ "path": "Cycle_barrier_double.png",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://wiki.openstreetmap.org/wiki/File:Cycle_barrier_double.png"
+ ]
+ },
+ {
+ "authors": [
+ "Supaplex030"
+ ],
+ "path": "Cycle_barrier_triple.png",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://wiki.openstreetmap.org/wiki/File:Cycle_barrier_triple.png"
+ ]
+ },
+ {
+ "authors": [
+ "Supaplex030"
+ ],
+ "path": "Cycle_barrier_angular.png",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://wiki.openstreetmap.org/wiki/File:Cycle_barrier_angular.png"
+ ]
+ },
+ {
+ "authors": [
+ "Supaplex030"
+ ],
+ "path": "Cycle_barrier_squeeze.png",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://wiki.openstreetmap.org/wiki/File:Cycle_barrier_squeeze.png"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/langs/layers/en.json b/langs/layers/en.json
index 04122f5b79..afae48ada7 100644
--- a/langs/layers/en.json
+++ b/langs/layers/en.json
@@ -775,6 +775,17 @@
"then": "This traffic light does not have a button to request green light"
}
}
+ },
+ "5": {
+ "question": "Can a cyclist turn right when the light is red?",
+ "mappings": {
+ "0": {
+ "then": "A cyclist can turn right if the light is red"
+ },
+ "1": {
+ "then": "A cyclist can not turn right if the light is red"
+ }
+ }
}
}
},
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index 72d5473261..87545a440b 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -857,6 +857,17 @@
"then": "Dit verkeerlicht heeft niet een knop voor groen licht"
}
}
+ },
+ "5": {
+ "question": "Mag een fietser rechtsaf slaan als het licht rood is?",
+ "mappings": {
+ "0": {
+ "then": "Een fietser mag niet rechtsaf slaan als het licht rood is"
+ },
+ "1": {
+ "then": "Een fietser mag rechtsaf slaan als het licht rood is"
+ }
+ }
}
}
},
diff --git a/langs/themes/en.json b/langs/themes/en.json
index 25e46f9aee..f493d8db25 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -981,13 +981,16 @@
"question": "What kind of cycling barrier is this?",
"mappings": {
"0": {
- "then": "Single, just two barriers with a space inbetween"
+ "then": "Single, just two barriers with a space inbetween "
},
"1": {
- "then": "Double, two barriers behind each other"
+ "then": "Double, two barriers behind each other "
},
"2": {
- "then": "Triple, three barier behind each other"
+ "then": "Triple, three barier behind each other "
+ },
+ "3": {
+ "then": "Squeeze gate, gap is smaller at top, then at bottom "
}
}
},
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index bb7e3ad5a6..eee69b7fdc 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -785,13 +785,13 @@
"question": "Wat voor fietshekjes zijn dit?",
"mappings": {
"0": {
- "then": "Enkelvoudig, slechts twee hekjes met ruimte ertussen"
+ "then": "Enkelvoudig, slechts twee hekjes met ruimte ertussen "
},
"1": {
- "then": "Dubbel, twee hekjes achter elkaar"
+ "then": "Dubbel, twee hekjes achter elkaar "
},
"2": {
- "then": "Drievoudig, drie hekjes achter elkaar"
+ "then": "Drievoudig, drie hekjes achter elkaar "
}
}
},
From 209959392a6028fdd3478971f462729687707e52 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Mon, 19 Jul 2021 16:43:01 +0200
Subject: [PATCH 34/71] Cycle barrier measurements
---
assets/themes/cycle_infra/cycle_infra.json | 54 ++++++++++++++++++++++
langs/themes/en.json | 12 +++++
2 files changed, 66 insertions(+)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 9f257b28e7..47982f44d3 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -858,6 +858,60 @@
"key": "maxwidth:physical",
"type": "pfloat"
}
+ },
+ {
+ "render": {
+ "en": "Space between barriers (along the length of the road): {width:seperation} m"
+ },
+ "question": {
+ "en": "How much space is there between the barriers (along the length of the road)?"
+ },
+ "condition": {
+ "or": [
+ "cycle_barrier:type=double",
+ "cycle_barrier:type=triple"
+ ]
+ },
+ "freeform": {
+ "key": "width:seperation",
+ "type": "pfloat"
+ }
+ },
+ {
+ "render": {
+ "en": "Width of opening: {width:opening} m"
+ },
+ "question": {
+ "en": "How wide is the smallest opening next to the barriers?"
+ },
+ "condition": {
+ "or": [
+ "cycle_barrier:type=double",
+ "cycle_barrier:type=triple"
+ ]
+ },
+ "freeform": {
+ "key": "width:opening",
+ "type": "pfloat"
+ }
+ },
+ {
+ "render": {
+ "en": "Overlap: {overlap} m"
+ },
+ "question": {
+ "en": "How much overlap do the barriers have?"
+ },
+ "condition": {
+ "or": [
+ "cycle_barrier:type=double",
+ "cycle_barrier:type=triple"
+ ]
+ },
+ "freeform": {
+ "key": "overlap",
+ "type": "pfloat"
+ }
}
]
},
diff --git a/langs/themes/en.json b/langs/themes/en.json
index f493d8db25..c397becd78 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -997,6 +997,18 @@
"3": {
"render": "Maximum width: {maxwidth:physical} m",
"question": "How wide is the gap left over besides the barrier?"
+ },
+ "4": {
+ "render": "Space between barriers (along the length of the road): {width:seperation} m",
+ "question": "How much space is there between the barriers (along the length of the road)?"
+ },
+ "5": {
+ "render": "Width of opening: {width:opening} m",
+ "question": "How wide is the smallest opening next to the barriers?"
+ },
+ "6": {
+ "render": "Overlap: {overlap} m",
+ "question": "How much overlap do the barriers have?"
}
}
}
From 894ef68d0f804deb27757e702544a0cec473b370 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Tue, 20 Jul 2021 14:14:20 +0200
Subject: [PATCH 35/71] Cyclestreet moved to seperate question, traffic_signs
added
---
.../cycle_infra/Belgian_road_sign_D07.svg | 84 ++++++++++++++++
.../cycle_infra/Belgian_road_sign_D09.svg | 81 +++++++++++++++
.../cycle_infra/Belgian_road_sign_D10.svg | 77 +++++++++++++++
assets/themes/cycle_infra/cycle_infra.json | 98 +++++++++++++++----
assets/themes/cycle_infra/license_info.json | 30 ++++++
5 files changed, 349 insertions(+), 21 deletions(-)
create mode 100644 assets/themes/cycle_infra/Belgian_road_sign_D07.svg
create mode 100644 assets/themes/cycle_infra/Belgian_road_sign_D09.svg
create mode 100644 assets/themes/cycle_infra/Belgian_road_sign_D10.svg
diff --git a/assets/themes/cycle_infra/Belgian_road_sign_D07.svg b/assets/themes/cycle_infra/Belgian_road_sign_D07.svg
new file mode 100644
index 0000000000..5a831ed93f
--- /dev/null
+++ b/assets/themes/cycle_infra/Belgian_road_sign_D07.svg
@@ -0,0 +1,84 @@
+
+
+
+
diff --git a/assets/themes/cycle_infra/Belgian_road_sign_D09.svg b/assets/themes/cycle_infra/Belgian_road_sign_D09.svg
new file mode 100644
index 0000000000..154a21600e
--- /dev/null
+++ b/assets/themes/cycle_infra/Belgian_road_sign_D09.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/assets/themes/cycle_infra/Belgian_road_sign_D10.svg b/assets/themes/cycle_infra/Belgian_road_sign_D10.svg
new file mode 100644
index 0000000000..03549e2866
--- /dev/null
+++ b/assets/themes/cycle_infra/Belgian_road_sign_D10.svg
@@ -0,0 +1,77 @@
+
+
+
+
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 47982f44d3..7ab6825592 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -37,7 +37,9 @@
"osmTags": {
"or": [
"highway=cycleway",
- "cycleway=^(?!no).*",
+ "cycleway=lane",
+ "cycleway=shared_lane",
+ "cycleway=track",
"cyclestreet=yes",
{
"and": [
@@ -142,13 +144,6 @@
"nl": "Er is een apart getekend fietspad."
}
},
- {
- "if": "cyclestreet=yes",
- "then": {
- "nl": "Dit is een fietsstraat.",
- "en": "This is a cyclestreet."
- }
- },
{
"if": "cycleway=",
"then": {
@@ -200,6 +195,27 @@
}
]
},
+ {
+ "question": {
+ "en": "Is this a cyclestreet?",
+ "nl": "Is dit een fietsstraat?"
+ },
+ "condition": {
+ "and": [
+ "highway!=cycleway",
+ "highway!=path"
+ ]
+ },
+ "mappings": [
+ {
+ "if": "cyclestreet=yes",
+ "then": {
+ "en": "This is a cyclestreet.",
+ "nl": "Dit is een fietstraat"
+ }
+ }
+ ]
+ },
{
"render": {
"en": "The maximum speed on this road is {maxspeed} km/h",
@@ -277,42 +293,42 @@
{
"if": "cycleway:surface=wood",
"then": {
- "en": "This street is made of wood",
- "nl": "Deze weg is gemaakt van hout"
+ "en": "This cycleway is made of wood",
+ "nl": "Dit fietspad is gemaakt van hout"
}
},
{
"if": "cycleway:surface=concrete",
"then": {
- "en": "This street is made of concrete",
- "nl": "Deze straat is gemaakt van beton"
+ "en": "This cycleway is made of concrete",
+ "nl": "Dit fietspad is gemaakt van beton"
}
},
{
"if": "cycleway:surface=cobblestone",
"then": {
- "en": "This street is made of cobblestone",
- "nl": "Deze straat is gemaakt van kasseien"
+ "en": "This cycleway is made of cobblestone",
+ "nl": "Dit fietspad is gemaakt van kasseien"
}
},
{
"if": "cycleway:surface=asphalt",
"then": {
- "en": "This street is made of asphalt",
- "nl": "Deze straat is gemaakt van asfalt"
+ "en": "This cycleway is made of asphalt",
+ "nl": "Dit fietspad is gemaakt van asfalt"
}
},
{
"if": "cycleway:surface=paved",
"then": {
- "en": "This street is paved",
- "nl": "Deze straat is geplaveid"
+ "en": "This cycleway is paved",
+ "nl": "Dit fietspad is geplaveid"
}
}
],
"question": {
- "en": "What is the cycleway:surface of the street made from?",
- "nl": "Waaruit is het oppervlak van de straat gemaakt?"
+ "en": "What is the surface of the cycleway made from?",
+ "nl": "Waaruit is het oppervlak van het fietspad van gemaakt?"
}
},
{
@@ -392,7 +408,7 @@
"if": "surface=wood",
"then": {
"en": "This street is made of wood",
- "nl": "Deze weg is gemaakt van hout"
+ "nl": "Deze straat is gemaakt van hout"
}
},
{
@@ -512,6 +528,46 @@
"en": "What is the carriage width of this road (in meters)?",
"nl": "Hoe breed is de rijbaan in deze straat (in meters)?"
}
+ },
+ {
+ "question": {
+ "en": "What traffic sign does this cycleway have?",
+ "nl": "Welk verkeersbord heeft dit fietspad?"
+ },
+ "condition": {
+ "or": [
+ "cycleway=lane",
+ "cycleway=track"
+ ]
+ },
+ "mappings": [
+ {
+ "if": "cycleway:traffic_sign=BE:D7",
+ "then": {
+ "en": "Compulsory cycleway ",
+ "nl": "Verplicht fietspad "
+ },
+ "hideInAnswer": "_country!=be"
+ },
+ {
+ "if": "cycleway:traffic_sign=BE:D9",
+ "then": {
+ "en": "Compulsory cycleway '",
+ "nl": "Verplicht fietspad '"
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": ["segregated=yes"]
+ },
+ {
+ "if": "cycleway:traffic_sign=BE:D10",
+ "then": {
+ "en": "Compulsory cycleway '",
+ "nl": "Verplicht fietspad '"
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": ["segregated=no"]
+ }
+ ]
}
],
"hideUnderlayingFeaturesMinPercentage": 0,
diff --git a/assets/themes/cycle_infra/license_info.json b/assets/themes/cycle_infra/license_info.json
index 9efa074568..9f7263bf57 100644
--- a/assets/themes/cycle_infra/license_info.json
+++ b/assets/themes/cycle_infra/license_info.json
@@ -1,4 +1,34 @@
[
+ {
+ "authors": [
+ "Belgische Wetgever"
+ ],
+ "path": "Belgian_road_sign_D07.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Belgian_road_sign_D07.svg"
+ ]
+ },
+ {
+ "authors": [
+ "Belgische Wetgever"
+ ],
+ "path": "Belgian_road_sign_D09.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Belgian_road_sign_D09.svg"
+ ]
+ },
+ {
+ "authors": [
+ "Belgische Wetgever"
+ ],
+ "path": "Belgian_road_sign_D10.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Belgian_road_sign_D10.svg"
+ ]
+ },
{
"authors": [
"Supaplex030"
From 778c98fa02788fc9876a2e7e3d52722b89eb71c7 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Tue, 20 Jul 2021 14:17:32 +0200
Subject: [PATCH 36/71] Update translation
---
assets/themes/cycle_infra/cycle_infra.json | 8 +++-
langs/themes/en.json | 47 ++++++++++++++------
langs/themes/nl.json | 51 +++++++++++++++-------
3 files changed, 74 insertions(+), 32 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 7ab6825592..6f0430aa3d 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -556,7 +556,9 @@
"nl": "Verplicht fietspad '"
},
"hideInAnswer": "_country!=be",
- "addExtraTags": ["segregated=yes"]
+ "addExtraTags": [
+ "segregated=yes"
+ ]
},
{
"if": "cycleway:traffic_sign=BE:D10",
@@ -565,7 +567,9 @@
"nl": "Verplicht fietspad '"
},
"hideInAnswer": "_country!=be",
- "addExtraTags": ["segregated=no"]
+ "addExtraTags": [
+ "segregated=no"
+ ]
}
]
}
diff --git a/langs/themes/en.json b/langs/themes/en.json
index c397becd78..1c260fd200 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -736,9 +736,6 @@
"then": "There is a seperately drawn cycleway"
},
"4": {
- "then": "This is a cyclestreet."
- },
- "5": {
"then": "There is no cycleway"
}
},
@@ -762,6 +759,14 @@
}
},
"2": {
+ "question": "Is this a cyclestreet?",
+ "mappings": {
+ "0": {
+ "then": "This is a cyclestreet."
+ }
+ }
+ },
+ "3": {
"render": "The maximum speed on this road is {maxspeed} km/h",
"mappings": {
"0": {
@@ -782,28 +787,28 @@
},
"question": "What is the maximum speed in this street?"
},
- "3": {
+ "4": {
"render": "This cyleway is made of {cycleway:surface}",
"mappings": {
"0": {
- "then": "This street is made of wood"
+ "then": "This cycleway is made of wood"
},
"1": {
- "then": "This street is made of concrete"
+ "then": "This cycleway is made of concrete"
},
"2": {
- "then": "This street is made of cobblestone"
+ "then": "This cycleway is made of cobblestone"
},
"3": {
- "then": "This street is made of asphalt"
+ "then": "This cycleway is made of asphalt"
},
"4": {
- "then": "This street is paved"
+ "then": "This cycleway is paved"
}
},
- "question": "What is the cycleway:surface of the street made from?"
+ "question": "What is the surface of the cycleway made from?"
},
- "4": {
+ "5": {
"question": "What is the smoothness of this cycleway?",
"mappings": {
"0": {
@@ -832,7 +837,7 @@
}
}
},
- "5": {
+ "6": {
"render": "This road is made of {surface}",
"mappings": {
"0": {
@@ -853,7 +858,7 @@
},
"question": "What is the surface of the street made from?"
},
- "6": {
+ "7": {
"question": "What is the smoothness of this street?",
"mappings": {
"0": {
@@ -882,9 +887,23 @@
}
}
},
- "7": {
+ "8": {
"render": "The carriage width of this road is {width:carriageway}m",
"question": "What is the carriage width of this road (in meters)?"
+ },
+ "9": {
+ "question": "What traffic sign does this cycleway have?",
+ "mappings": {
+ "0": {
+ "then": "Compulsory cycleway "
+ },
+ "1": {
+ "then": "Compulsory cycleway '"
+ },
+ "2": {
+ "then": "Compulsory cycleway '"
+ }
+ }
}
}
},
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index eee69b7fdc..f6b0d5956f 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -592,9 +592,6 @@
"then": "Er is een apart getekend fietspad."
},
"4": {
- "then": "Dit is een fietsstraat."
- },
- "5": {
"then": "Er is geen fietspad"
}
},
@@ -618,6 +615,14 @@
}
},
"2": {
+ "question": "Is dit een fietsstraat?",
+ "mappings": {
+ "0": {
+ "then": "Dit is een fietstraat"
+ }
+ }
+ },
+ "3": {
"render": "De maximumsnelheid op deze weg is {maxspeed} km/u",
"mappings": {
"0": {
@@ -638,35 +643,35 @@
},
"question": "Wat is de maximumsnelheid in deze straat?"
},
- "3": {
+ "4": {
"render": "Dit fietspad is gemaakt van {cycleway:surface}",
"mappings": {
"0": {
- "then": "Deze weg is gemaakt van hout"
+ "then": "Dit fietspad is gemaakt van hout"
},
"1": {
- "then": "Deze straat is gemaakt van beton"
+ "then": "Dit fietspad is gemaakt van beton"
},
"2": {
- "then": "Deze straat is gemaakt van kasseien"
+ "then": "Dit fietspad is gemaakt van kasseien"
},
"3": {
- "then": "Deze straat is gemaakt van asfalt"
+ "then": "Dit fietspad is gemaakt van asfalt"
},
"4": {
- "then": "Deze straat is geplaveid"
+ "then": "Dit fietspad is geplaveid"
}
},
- "question": "Waaruit is het oppervlak van de straat gemaakt?"
- },
- "4": {
- "question": "Wat is de kwaliteit van dit fietspad?"
+ "question": "Waaruit is het oppervlak van het fietspad van gemaakt?"
},
"5": {
+ "question": "Wat is de kwaliteit van dit fietspad?"
+ },
+ "6": {
"render": "Deze weg is gemaakt van {surface}",
"mappings": {
"0": {
- "then": "Deze weg is gemaakt van hout"
+ "then": "Deze straat is gemaakt van hout"
},
"1": {
"then": "Deze straat is gemaakt van beton"
@@ -683,12 +688,26 @@
},
"question": "Waaruit is het oppervlak van de straat gemaakt?"
},
- "6": {
+ "7": {
"question": "Wat is de kwaliteit van deze straat?"
},
- "7": {
+ "8": {
"render": "De breedte van deze rijbaan in deze straat is {width:carriageway}m",
"question": "Hoe breed is de rijbaan in deze straat (in meters)?"
+ },
+ "9": {
+ "question": "Welk verkeersbord heeft dit fietspad?",
+ "mappings": {
+ "0": {
+ "then": "Verplicht fietspad "
+ },
+ "1": {
+ "then": "Verplicht fietspad '"
+ },
+ "2": {
+ "then": "Verplicht fietspad '"
+ }
+ }
}
}
},
From 95de6c705516c9b753463200628a0f3cbe792145 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Tue, 20 Jul 2021 14:45:42 +0200
Subject: [PATCH 37/71] cycleway:buffer
---
assets/themes/cycle_infra/cycle_infra.json | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 6f0430aa3d..c74a35338e 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -572,6 +572,23 @@
]
}
]
+ },
+ {
+ "render": {
+ "en": "The buffer besides this cycleway is {cycleway:buffer} m",
+ "nl": "De schrikafstand van dit fietspad is {cycleway:buffer} m"
+ },
+ "question": {
+ "en": "How wide is the gap between the cycleway and the road?",
+ "nl": "Hoe breed is de ruimte tussen het fietspad en de weg?"
+ },
+ "condition": {
+ "or": ["cycleway=track", "cycleway=lane", "highway=cycleway", "highway=path"]
+ },
+ "freeform": {
+ "key": "cycleway:buffer",
+ "type": "pfloat"
+ }
}
],
"hideUnderlayingFeaturesMinPercentage": 0,
From 526542f7ef81d55d7b01a82921f9dedaffd04e0b Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Tue, 20 Jul 2021 16:30:08 +0200
Subject: [PATCH 38/71] Cyclestreets options and cycleway=no
---
assets/themes/cycle_infra/cycle_infra.json | 78 ++++++++++++++++------
1 file changed, 57 insertions(+), 21 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index c74a35338e..3fac8865b5 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -101,10 +101,6 @@
"description": {},
"tagRenderings": [
{
- "freeform": {
- "key": "cycleway",
- "addExtraTags": []
- },
"question": {
"en": "What kind of cycleway is there?",
"nl": "Wat voor fietspad is hier?"
@@ -145,18 +141,23 @@
}
},
{
- "if": "cycleway=",
+ "if": "cycleway=no",
"then": {
"en": "There is no cycleway",
- "nl": "Er is geen fietspad"
+ "nl": "Er is geen fietspad aanwezig"
},
- "hideInAnswer": true
+ "hideInAnswer": "cycleway=opposite"
+ },
+ {
+ "if": "cycleway=no",
+ "then": {
+ "en": "There is no cycleway",
+ "nl": "Er is geen fietspad aanwezig"
+ },
+ "hideInAnswer": "cycleway!=opposite",
+ "addExtraTags": ["oneway:bicycle=no", "fixme=Changed from cycleway=opposite"]
}
- ],
- "render": {
- "en": "Unknown cycleway situation",
- "nl": "Onbekende fietspad situatie"
- }
+ ]
},
{
"question": {
@@ -210,9 +211,27 @@
{
"if": "cyclestreet=yes",
"then": {
- "en": "This is a cyclestreet.",
+ "en": "This is a cyclestreet, and a 30km/h zone.",
+ "nl": "Dit is een fietstraat, en dus een 30km/h zone"
+ },
+ "addExtraTags": ["overtaking:motor_vehicle=no", "maxspeed=30"],
+ "hideInAnswer": "_country!=be"
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": {
+ "en": "This is a cyclestreet",
"nl": "Dit is een fietstraat"
- }
+ },
+ "hideInAnswer": "_country=be"
+ },
+ {
+ "if": "cyclestreet=",
+ "then": {
+ "en": "This is not a cyclestreet.",
+ "nl": "Dit is niet een fietstraat"
+ },
+ "addExtraTags": ["overtaking:motor_vehicle="]
}
]
},
@@ -223,7 +242,7 @@
},
"freeform": {
"key": "maxspeed",
- "addExtraTags": []
+ "type": "nat"
},
"condition": {
"or": [
@@ -552,8 +571,8 @@
{
"if": "cycleway:traffic_sign=BE:D9",
"then": {
- "en": "Compulsory cycleway '",
- "nl": "Verplicht fietspad '"
+ "en": "Compulsory cycleway ",
+ "nl": "Verplicht fietspad "
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
@@ -563,8 +582,8 @@
{
"if": "cycleway:traffic_sign=BE:D10",
"then": {
- "en": "Compulsory cycleway '",
- "nl": "Verplicht fietspad '"
+ "en": "Compulsory cycleway ",
+ "nl": "Verplicht fietspad "
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
@@ -729,10 +748,27 @@
{
"if": "cycleway=",
"then": {
- "en": "There is no cycleway",
- "nl": "Er is geen fietspad"
+ "en": "There is no cycleway known here",
+ "nl": "Er is geen fietspad bekend hier"
},
"hideInAnswer": true
+ },
+ {
+ "if": "cycleway=no",
+ "then": {
+ "en": "There is no cycleway",
+ "nl": "Er is geen fietspad aanwezig"
+ },
+ "hideInAnswer": "cycleway=opposite"
+ },
+ {
+ "if": "cycleway=no",
+ "then": {
+ "en": "There is no cycleway",
+ "nl": "Er is geen fietspad aanwezig"
+ },
+ "hideInAnswer": "cycleway!=opposite",
+ "addExtraTags": ["oneway:bicycle=no", "fixme=Changed from cycleway=opposite"]
}
],
"render": {
From 192c7568da3b489b69b4cf2ab835340d28789d30 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Tue, 20 Jul 2021 16:52:01 +0200
Subject: [PATCH 39/71] =?UTF-8?q?=F0=9F=92=AC=F0=9F=92=9A=20Updated=20tran?=
=?UTF-8?q?slations,=20and=20hopefully=20fixed=20build?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
assets/themes/cycle_infra/cycle_infra.json | 26 +++++++++++++++----
langs/themes/en.json | 28 ++++++++++++++++----
langs/themes/nl.json | 30 +++++++++++++++++-----
3 files changed, 68 insertions(+), 16 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 3fac8865b5..94c75cbdad 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -155,7 +155,10 @@
"nl": "Er is geen fietspad aanwezig"
},
"hideInAnswer": "cycleway!=opposite",
- "addExtraTags": ["oneway:bicycle=no", "fixme=Changed from cycleway=opposite"]
+ "addExtraTags": [
+ "oneway:bicycle=no",
+ "fixme=Changed from cycleway=opposite"
+ ]
}
]
},
@@ -214,7 +217,10 @@
"en": "This is a cyclestreet, and a 30km/h zone.",
"nl": "Dit is een fietstraat, en dus een 30km/h zone"
},
- "addExtraTags": ["overtaking:motor_vehicle=no", "maxspeed=30"],
+ "addExtraTags": [
+ "overtaking:motor_vehicle=no",
+ "maxspeed=30"
+ ],
"hideInAnswer": "_country!=be"
},
{
@@ -231,7 +237,9 @@
"en": "This is not a cyclestreet.",
"nl": "Dit is niet een fietstraat"
},
- "addExtraTags": ["overtaking:motor_vehicle="]
+ "addExtraTags": [
+ "overtaking:motor_vehicle="
+ ]
}
]
},
@@ -602,7 +610,12 @@
"nl": "Hoe breed is de ruimte tussen het fietspad en de weg?"
},
"condition": {
- "or": ["cycleway=track", "cycleway=lane", "highway=cycleway", "highway=path"]
+ "or": [
+ "cycleway=track",
+ "cycleway=lane",
+ "highway=cycleway",
+ "highway=path"
+ ]
},
"freeform": {
"key": "cycleway:buffer",
@@ -768,7 +781,10 @@
"nl": "Er is geen fietspad aanwezig"
},
"hideInAnswer": "cycleway!=opposite",
- "addExtraTags": ["oneway:bicycle=no", "fixme=Changed from cycleway=opposite"]
+ "addExtraTags": [
+ "oneway:bicycle=no",
+ "fixme=Changed from cycleway=opposite"
+ ]
}
],
"render": {
diff --git a/langs/themes/en.json b/langs/themes/en.json
index 1c260fd200..2cc532c274 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -737,9 +737,11 @@
},
"4": {
"then": "There is no cycleway"
+ },
+ "5": {
+ "then": "There is no cycleway"
}
- },
- "render": "Unknown cycleway situation"
+ }
},
"1": {
"question": "Is this street lit?",
@@ -762,7 +764,13 @@
"question": "Is this a cyclestreet?",
"mappings": {
"0": {
- "then": "This is a cyclestreet."
+ "then": "This is a cyclestreet, and a 30km/h zone."
+ },
+ "1": {
+ "then": "This is a cyclestreet"
+ },
+ "2": {
+ "then": "This is not a cyclestreet."
}
}
},
@@ -898,12 +906,16 @@
"then": "Compulsory cycleway "
},
"1": {
- "then": "Compulsory cycleway '"
+ "then": "Compulsory cycleway "
},
"2": {
- "then": "Compulsory cycleway '"
+ "then": "Compulsory cycleway "
}
}
+ },
+ "10": {
+ "render": "The buffer besides this cycleway is {cycleway:buffer} m",
+ "question": "How wide is the gap between the cycleway and the road?"
}
}
},
@@ -933,6 +945,12 @@
"then": "This is a cyclestreet."
},
"5": {
+ "then": "There is no cycleway known here"
+ },
+ "6": {
+ "then": "There is no cycleway"
+ },
+ "7": {
"then": "There is no cycleway"
}
},
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index f6b0d5956f..70b6a208d0 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -592,10 +592,12 @@
"then": "Er is een apart getekend fietspad."
},
"4": {
- "then": "Er is geen fietspad"
+ "then": "Er is geen fietspad aanwezig"
+ },
+ "5": {
+ "then": "Er is geen fietspad aanwezig"
}
- },
- "render": "Onbekende fietspad situatie"
+ }
},
"1": {
"question": "Is deze weg verlicht?",
@@ -618,7 +620,13 @@
"question": "Is dit een fietsstraat?",
"mappings": {
"0": {
+ "then": "Dit is een fietstraat, en dus een 30km/h zone"
+ },
+ "1": {
"then": "Dit is een fietstraat"
+ },
+ "2": {
+ "then": "Dit is niet een fietstraat"
}
}
},
@@ -702,12 +710,16 @@
"then": "Verplicht fietspad "
},
"1": {
- "then": "Verplicht fietspad '"
+ "then": "Verplicht fietspad "
},
"2": {
- "then": "Verplicht fietspad '"
+ "then": "Verplicht fietspad "
}
}
+ },
+ "10": {
+ "render": "De schrikafstand van dit fietspad is {cycleway:buffer} m",
+ "question": "Hoe breed is de ruimte tussen het fietspad en de weg?"
}
}
},
@@ -737,7 +749,13 @@
"then": "Dit is een fietsstraat."
},
"5": {
- "then": "Er is geen fietspad"
+ "then": "Er is geen fietspad bekend hier"
+ },
+ "6": {
+ "then": "Er is geen fietspad aanwezig"
+ },
+ "7": {
+ "then": "Er is geen fietspad aanwezig"
}
},
"render": "Onbekende fietspad situatie"
From 0f8d3471dce7a61498dd5018e112c2d0e2469e39 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 22 Jul 2021 09:43:24 +0200
Subject: [PATCH 40/71] Cyclestreet question fixed for new cycleways
---
assets/themes/cycle_infra/cycle_infra.json | 51 +++++++++++++++++++---
langs/themes/en.json | 21 ++++++---
langs/themes/nl.json | 21 ++++++---
3 files changed, 76 insertions(+), 17 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 94c75cbdad..69b0e059d0 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -751,13 +751,6 @@
"nl": "Er is een apart getekend fietspad."
}
},
- {
- "if": "cyclestreet=yes",
- "then": {
- "nl": "Dit is een fietsstraat.",
- "en": "This is a cyclestreet."
- }
- },
{
"if": "cycleway=",
"then": {
@@ -791,6 +784,50 @@
"en": "Unknown cycleway situation",
"nl": "Onbekende fietspad situatie"
}
+ },
+ {
+ "question": {
+ "en": "Is this a cyclestreet?",
+ "nl": "Is dit een fietsstraat?"
+ },
+ "condition": {
+ "and": [
+ "highway!=cycleway",
+ "highway!=path"
+ ]
+ },
+ "mappings": [
+ {
+ "if": "cyclestreet=yes",
+ "then": {
+ "en": "This is a cyclestreet, and a 30km/h zone.",
+ "nl": "Dit is een fietstraat, en dus een 30km/h zone"
+ },
+ "addExtraTags": [
+ "overtaking:motor_vehicle=no",
+ "maxspeed=30"
+ ],
+ "hideInAnswer": "_country!=be"
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": {
+ "en": "This is a cyclestreet",
+ "nl": "Dit is een fietstraat"
+ },
+ "hideInAnswer": "_country=be"
+ },
+ {
+ "if": "cyclestreet=",
+ "then": {
+ "en": "This is not a cyclestreet.",
+ "nl": "Dit is niet een fietstraat"
+ },
+ "addExtraTags": [
+ "overtaking:motor_vehicle="
+ ]
+ }
+ ]
}
]
},
diff --git a/langs/themes/en.json b/langs/themes/en.json
index 2cc532c274..367128e6ca 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -942,19 +942,30 @@
"then": "There is a seperately drawn cycleway"
},
"4": {
- "then": "This is a cyclestreet."
- },
- "5": {
"then": "There is no cycleway known here"
},
- "6": {
+ "5": {
"then": "There is no cycleway"
},
- "7": {
+ "6": {
"then": "There is no cycleway"
}
},
"render": "Unknown cycleway situation"
+ },
+ "1": {
+ "question": "Is this a cyclestreet?",
+ "mappings": {
+ "0": {
+ "then": "This is a cyclestreet, and a 30km/h zone."
+ },
+ "1": {
+ "then": "This is a cyclestreet"
+ },
+ "2": {
+ "then": "This is not a cyclestreet."
+ }
+ }
}
}
},
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index 70b6a208d0..8f41e1de1a 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -746,19 +746,30 @@
"then": "Er is een apart getekend fietspad."
},
"4": {
- "then": "Dit is een fietsstraat."
- },
- "5": {
"then": "Er is geen fietspad bekend hier"
},
- "6": {
+ "5": {
"then": "Er is geen fietspad aanwezig"
},
- "7": {
+ "6": {
"then": "Er is geen fietspad aanwezig"
}
},
"render": "Onbekende fietspad situatie"
+ },
+ "1": {
+ "question": "Is dit een fietsstraat?",
+ "mappings": {
+ "0": {
+ "then": "Dit is een fietstraat, en dus een 30km/h zone"
+ },
+ "1": {
+ "then": "Dit is een fietstraat"
+ },
+ "2": {
+ "then": "Dit is niet een fietstraat"
+ }
+ }
}
}
},
From 8660f73ac11616f46c44e11c482684f8bb2270ec Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Thu, 22 Jul 2021 10:00:24 +0200
Subject: [PATCH 41/71] Minor changes to base layer | Fixes some typos
---
.vscode/settings.json | 7 ++++-
Customizations/JSON/LayerConfigJson.ts | 16 +++++-----
assets/themes/cycle_infra/cycle_infra.json | 36 +++++++++++++++++-----
langs/themes/en.json | 4 +++
langs/themes/nl.json | 4 +++
5 files changed, 50 insertions(+), 17 deletions(-)
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 37441beed9..b4a73d7d4b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,8 @@
{
- "files.eol": "\n"
+ "files.eol": "\n",
+ "workbench.colorCustomizations": {
+ "activityBar.background": "#551907",
+ "titleBar.activeBackground": "#78230A",
+ "titleBar.activeForeground": "#FFFBFA"
+ }
}
\ No newline at end of file
diff --git a/Customizations/JSON/LayerConfigJson.ts b/Customizations/JSON/LayerConfigJson.ts
index ca272ecb05..b81fad5ff6 100644
--- a/Customizations/JSON/LayerConfigJson.ts
+++ b/Customizations/JSON/LayerConfigJson.ts
@@ -54,7 +54,7 @@ export interface LayerConfigJson {
* Note that both geojson-options might set a flag 'isOsmCache' indicating that the data originally comes from OSM too
*
*
- * NOTE: the previous format was 'overpassTags: AndOrTagCOnfigJson | string', which is interpreted as a shorthand for source: {osmTags: "key=value"}
+ * NOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: "key=value"}
* While still supported, this is considered deprecated
*/
source: { osmTags: AndOrTagConfigJson | string } |
@@ -81,7 +81,7 @@ export interface LayerConfigJson {
doNotDownload?: boolean;
/**
- * This tagrendering should either be 'yes' or 'no'. If 'no' is returned, then the feature will be hidden from view.
+ * This tag rendering should either be 'yes' or 'no'. If 'no' is returned, then the feature will be hidden from view.
* This is useful to hide certain features from view. Important: hiding features does not work dynamically, but is only calculated when the data is first renders.
* This implies that it is not possible to hide a feature after a tagging change
*
@@ -91,13 +91,13 @@ export interface LayerConfigJson {
/**
- * The zoomlevel at which point the data is shown and loaded.
+ * The zoom level at which point the data is shown and loaded.
* Default: 0
*/
minzoom?: number;
/**
- * The zoomlevel at which point the data is hidden again
+ * The zoom level at which point the data is hidden again
* Default: 100 (thus: always visible
*/
maxzoom?: number;
@@ -120,9 +120,9 @@ export interface LayerConfigJson {
* Note that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.
*
* The result of the icon is rendered as follows:
- * the resulting string is interpreted as a _list_ of items, seperated by ";". The bottommost layer is the first layer.
+ * the resulting string is interpreted as a _list_ of items, separated by ";". The bottommost layer is the first layer.
* As a result, on could use a generic pin, then overlay it with a specific icon.
- * To make things even more practical, one can use all svgs from the folder "assets/svg" and _substitute the color_ in it.
+ * To make things even more practical, one can use all SVG's from the folder "assets/svg" and _substitute the color_ in it.
* E.g. to draw a red pin, use "pin:#f00", to have a green circle with your icon on top, use `circle:#0f0;`
*
*/
@@ -220,7 +220,7 @@ export interface LayerConfigJson {
/**
* If set, the user will prompted to confirm the location before actually adding the data.
- * THis will be with a 'drag crosshair'-method.
+ * This will be with a 'drag crosshair'-method.
*
* If 'preferredBackgroundCategory' is set, the element will attempt to pick a background layer of that category.
*/
@@ -235,7 +235,7 @@ export interface LayerConfigJson {
*
* Refer to the class `TagRenderingConfigJson` to see the possibilities.
*
- * Note that we can also use a string here - where the string refers to a tagrenering defined in `assets/questions/questions.json`,
+ * Note that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,
* where a few very general questions are defined e.g. website, phone number, ...
*
* A special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index c74a35338e..c71b40f420 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -9,21 +9,22 @@
"nl": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken."
},
"description": {
- "en": "A map where you can view and edit things related to the bicycle infrastructure made during osoc21.",
- "nl": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken gemaakt tijdens osoc21."
+ "en": "A map where you can view and edit things related to the bicycle infrastructure. Made during #osoc21.",
+ "nl": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken. Gemaakt tijdens #osoc21."
},
"language": [
"en",
"nl"
],
"maintainer": "",
+ "defaultBackgroundId": "CartoDB.Positron",
"icon": "./assets/svg/cycle-infra.svg",
"version": "0",
"startLat": 51,
"startLon": 3.75,
"startZoom": 11,
"widenFactor": 0.05,
- "socialImage": "",
+ "socialImage": "./assets/svg/cycle-infra.svg",
"enableDownload": true,
"layers": [
{
@@ -120,7 +121,7 @@
"if": "cycleway=shared_lane",
"then": {
"en": "There is a shared lane",
- "nl": "Er is een fietssugestiestrook"
+ "nl": "Er is een fietssuggestiestrook"
}
},
{
@@ -583,7 +584,12 @@
"nl": "Hoe breed is de ruimte tussen het fietspad en de weg?"
},
"condition": {
- "or": ["cycleway=track", "cycleway=lane", "highway=cycleway", "highway=path"]
+ "or": [
+ "cycleway=track",
+ "cycleway=lane",
+ "highway=cycleway",
+ "highway=path"
+ ]
},
"freeform": {
"key": "cycleway:buffer",
@@ -631,7 +637,21 @@
}
]
},
- "presets": []
+ "dashArray": {
+ "mappings": [
+ {
+ "if": {
+ "or": [
+ "highway=cycleway",
+ "highway=path"
+ ]
+ },
+ "then": "25 15"
+ }
+ ]
+ },
+ "presets": [
+ ]
},
{
"id": "all_streets",
@@ -904,14 +924,14 @@
{
"if": "cycle_barrier:type=triple",
"then": {
- "en": "Triple, three barier behind each other ",
+ "en": "Triple, three barriers behind each other ",
"nl": "Drievoudig, drie hekjes achter elkaar "
}
},
{
"if": "cycle_barrier:type=squeeze",
"then": {
- "en": "Squeeze gate, gap is smaller at top, then at bottom "
+ "en": "Squeeze gate, gap is smaller at top, than at the bottom "
}
}
]
diff --git a/langs/themes/en.json b/langs/themes/en.json
index 1c260fd200..1af2f922d3 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -904,6 +904,10 @@
"then": "Compulsory cycleway '"
}
}
+ },
+ "10": {
+ "render": "The buffer besides this cycleway is {cycleway:buffer} m",
+ "question": "How wide is the gap between the cycleway and the road?"
}
}
},
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index f6b0d5956f..8b7da8e584 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -708,6 +708,10 @@
"then": "Verplicht fietspad '"
}
}
+ },
+ "10": {
+ "render": "De schrikafstand van dit fietspad is {cycleway:buffer} m",
+ "question": "Hoe breed is de ruimte tussen het fietspad en de weg?"
}
}
},
From 63708ea568f7ee80d81e96c237167468dccf38ef Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 22 Jul 2021 10:31:44 +0200
Subject: [PATCH 42/71] Seperation and traffic sign
---
assets/themes/cycle_infra/cycle_infra.json | 154 ++++++++++++++++++++-
langs/themes/en.json | 58 +++++++-
langs/themes/nl.json | 58 +++++++-
3 files changed, 259 insertions(+), 11 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 69b0e059d0..56b39046a4 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -579,8 +579,8 @@
{
"if": "cycleway:traffic_sign=BE:D9",
"then": {
- "en": "Compulsory cycleway ",
- "nl": "Verplicht fietspad "
+ "en": "Segregated foot/cycleway ",
+ "nl": "Afgescheiden voet-/fietspad "
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
@@ -590,13 +590,71 @@
{
"if": "cycleway:traffic_sign=BE:D10",
"then": {
- "en": "Compulsory cycleway ",
- "nl": "Verplicht fietspad "
+ "en": "Unsegregated foot/cycleway ",
+ "nl": "Gedeeld voet-/fietspad "
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
"segregated=no"
]
+ },
+ {
+ "if": "cycleway:traffic_sign=none",
+ "then": {
+ "en": "No traffic sign present",
+ "nl": "Geen verkeersbord aanwezig"
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "What traffic sign does this cycleway have?",
+ "nl": "Welk verkeersbord heeft dit fietspad?"
+ },
+ "condition": {
+ "or": [
+ "highway=cycleway",
+ "highway=path"
+ ]
+ },
+ "mappings": [
+ {
+ "if": "traffic_sign=BE:D7",
+ "then": {
+ "en": "Compulsory cycleway ",
+ "nl": "Verplicht fietspad "
+ },
+ "hideInAnswer": "_country!=be"
+ },
+ {
+ "if": "traffic_sign=BE:D9",
+ "then": {
+ "en": "Segregated foot/cycleway ",
+ "nl": "Afgescheiden voet-/fietspad "
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "segregated=yes"
+ ]
+ },
+ {
+ "if": "traffic_sign=BE:D10",
+ "then": {
+ "en": "Unsegregated foot/cycleway ",
+ "nl": "Gedeeld voet-/fietspad "
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "segregated=no"
+ ]
+ },
+ {
+ "if": "cycleway:traffic_sign=none",
+ "then": {
+ "en": "No traffic sign present",
+ "nl": "Geen verkeersbord aanwezig"
+ }
}
]
},
@@ -612,15 +670,97 @@
"condition": {
"or": [
"cycleway=track",
- "cycleway=lane",
- "highway=cycleway",
- "highway=path"
+ "cycleway=lane"
]
},
"freeform": {
"key": "cycleway:buffer",
"type": "pfloat"
}
+ },
+ {
+ "question": {
+ "en": "How is this cycleway seperated from the road?",
+ "nl": "Hoe is dit fietspad gescheiden van de weg?"
+ },
+ "condition": {
+ "or": [
+ "cycleway=track",
+ "cycleway=lane"
+ ]
+ },
+ "mappings": [
+ {
+ "if": "cycleway:seperation=dashed_line",
+ "then": {
+ "en": "This cycleway is seperated by a dashed line",
+ "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep"
+ }
+ },
+ {
+ "if": "cycleway:seperation=solid_line",
+ "then": {
+ "en": "This cycleway is seperated by a solid line",
+ "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep"
+ }
+ },
+ {
+ "if": "cycleway:seperation=parking_lane",
+ "then": {
+ "en": "This cycleway is seperated by a parking lane",
+ "nl": "Dit fietspad is gescheiden van de weg met parkeervakken"
+ }
+ },
+ {
+ "if": "cycleway:seperation=kerb",
+ "then": {
+ "en": "This cycleway is seperated by a kerb",
+ "nl": "Dit fietspad is gescheiden van de weg met een stoeprand"
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "How is this cycleway seperated from the road?",
+ "nl": "Hoe is dit fietspad gescheiden van de weg?"
+ },
+ "condition": {
+ "or": [
+ "highway=cycleway",
+ "highway=path"
+ ]
+ },
+ "mappings": [
+ {
+ "if": "seperation=dashed_line",
+ "then": {
+ "en": "This cycleway is seperated by a dashed line",
+ "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep"
+ }
+ },
+ {
+ "if": "seperation=solid_line",
+ "then": {
+ "en": "This cycleway is seperated by a solid line",
+ "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep"
+ }
+ },
+ {
+ "if": "seperation=parking_lane",
+ "then": {
+ "en": "This cycleway is seperated by a parking lane",
+ "nl": "Dit fietspad is gescheiden van de weg met parkeervakken"
+ }
+ },
+ {
+ "if": "seperation=kerb",
+ "then": {
+ "en": "This cycleway is seperated by a kerb",
+ "nl": "Dit fietspad is gescheiden van de weg met een stoeprand"
+ }
+ }
+ ]
}
],
"hideUnderlayingFeaturesMinPercentage": 0,
diff --git a/langs/themes/en.json b/langs/themes/en.json
index 367128e6ca..f02d48c6e7 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -906,16 +906,70 @@
"then": "Compulsory cycleway "
},
"1": {
- "then": "Compulsory cycleway "
+ "then": "Segregated foot/cycleway "
},
"2": {
- "then": "Compulsory cycleway "
+ "then": "Unsegregated foot/cycleway "
+ },
+ "3": {
+ "then": "No traffic sign present"
}
}
},
"10": {
+ "question": "What traffic sign does this cycleway have?",
+ "mappings": {
+ "0": {
+ "then": "Compulsory cycleway "
+ },
+ "1": {
+ "then": "Segregated foot/cycleway "
+ },
+ "2": {
+ "then": "Unsegregated foot/cycleway "
+ },
+ "3": {
+ "then": "No traffic sign present"
+ }
+ }
+ },
+ "11": {
"render": "The buffer besides this cycleway is {cycleway:buffer} m",
"question": "How wide is the gap between the cycleway and the road?"
+ },
+ "12": {
+ "question": "How is this cycleway seperated from the road?",
+ "mappings": {
+ "0": {
+ "then": "This cycleway is seperated by a dashed line"
+ },
+ "1": {
+ "then": "This cycleway is seperated by a solid line"
+ },
+ "2": {
+ "then": "This cycleway is seperated by a parking lane"
+ },
+ "3": {
+ "then": "This cycleway is seperated by a kerb"
+ }
+ }
+ },
+ "13": {
+ "question": "How is this cycleway seperated from the road?",
+ "mappings": {
+ "0": {
+ "then": "This cycleway is seperated by a dashed line"
+ },
+ "1": {
+ "then": "This cycleway is seperated by a solid line"
+ },
+ "2": {
+ "then": "This cycleway is seperated by a parking lane"
+ },
+ "3": {
+ "then": "This cycleway is seperated by a kerb"
+ }
+ }
}
}
},
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index 8f41e1de1a..891cbe8ae3 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -710,16 +710,70 @@
"then": "Verplicht fietspad "
},
"1": {
- "then": "Verplicht fietspad "
+ "then": "Afgescheiden voet-/fietspad "
},
"2": {
- "then": "Verplicht fietspad "
+ "then": "Gedeeld voet-/fietspad "
+ },
+ "3": {
+ "then": "Geen verkeersbord aanwezig"
}
}
},
"10": {
+ "question": "Welk verkeersbord heeft dit fietspad?",
+ "mappings": {
+ "0": {
+ "then": "Verplicht fietspad "
+ },
+ "1": {
+ "then": "Afgescheiden voet-/fietspad "
+ },
+ "2": {
+ "then": "Gedeeld voet-/fietspad "
+ },
+ "3": {
+ "then": "Geen verkeersbord aanwezig"
+ }
+ }
+ },
+ "11": {
"render": "De schrikafstand van dit fietspad is {cycleway:buffer} m",
"question": "Hoe breed is de ruimte tussen het fietspad en de weg?"
+ },
+ "12": {
+ "question": "Hoe is dit fietspad gescheiden van de weg?",
+ "mappings": {
+ "0": {
+ "then": "Dit fietspad is gescheiden van de weg met een onderbroken streep"
+ },
+ "1": {
+ "then": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep"
+ },
+ "2": {
+ "then": "Dit fietspad is gescheiden van de weg met parkeervakken"
+ },
+ "3": {
+ "then": "Dit fietspad is gescheiden van de weg met een stoeprand"
+ }
+ }
+ },
+ "13": {
+ "question": "Hoe is dit fietspad gescheiden van de weg?",
+ "mappings": {
+ "0": {
+ "then": "Dit fietspad is gescheiden van de weg met een onderbroken streep"
+ },
+ "1": {
+ "then": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep"
+ },
+ "2": {
+ "then": "Dit fietspad is gescheiden van de weg met parkeervakken"
+ },
+ "3": {
+ "then": "Dit fietspad is gescheiden van de weg met een stoeprand"
+ }
+ }
}
}
},
From 9c84b9cf2eb3fdd869da22bb27cc1cd8e12f0242 Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Thu, 22 Jul 2021 12:04:59 +0200
Subject: [PATCH 43/71] New color scheme
---
assets/layers/crossings/crossings.json | 2 +-
assets/themes/cycle_infra/cycle_infra.json | 54 +++++++++++++++-------
2 files changed, 39 insertions(+), 17 deletions(-)
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
index 4521e57d9d..5bfe0081fc 100644
--- a/assets/layers/crossings/crossings.json
+++ b/assets/layers/crossings/crossings.json
@@ -16,7 +16,7 @@
]
}
},
- "minzoom": 14,
+ "minzoom": 18,
"title": {
"render": {
"en": "Crossing",
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index c71b40f420..8ffd1d8abf 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -611,43 +611,65 @@
"render": "#aaaaaa",
"mappings": [
{
- "if": {
- "or": [
- "highway=cycleway",
- "highway=path"
- ]
- },
- "then": "#00ff00"
+ "if": "highway=cycleway",
+ "then": "rgba(0, 189, 141, 0.7)"
+ },
+ {
+ "if": "highway=path",
+ "then": "rgba(204, 74, 207, 0.7)"
},
{
"if": "cycleway=track",
- "then": "#45c445"
+ "then": "rgba(113, 3, 200, 0.7)"
},
{
"if": "cycleway=shared_lane",
- "then": "#ff0000"
+ "then": "rgba(74, 59, 247, 0.7)"
},
{
"if": "cycleway=lane",
- "then": "#ff9900"
+ "then": "rgba(254, 155, 6, 0.9)"
},
{
"if": "cyclestreet=yes",
- "then": "#0000ff"
+ "then": "rgba(57, 159, 191, 0.7)"
}
]
},
"dashArray": {
+ "render": "",
"mappings": [
{
"if": {
"or": [
- "highway=cycleway",
- "highway=path"
+ "oneway=yes",
+ {
+ "or": [
+ "highway=cycleway",
+ "highway=path"
+ ]
+ }
]
},
- "then": "25 15"
+ "then": ""
+ },
+ {
+ "if": "cycleway=track",
+ "then": "30 15"
+ },
+ {
+ "if": "cycleway=shared_lane",
+ "then": "15 30"
+ },
+ {
+ "if": "cycleway=lane",
+ "then": "25 15 15 15 25"
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": ""
}
+
]
},
"presets": [
@@ -674,7 +696,7 @@
]
}
},
- "minzoom": 19,
+ "minzoom": 14,
"wayHandling": 0,
"title": {
"render": {
@@ -780,7 +802,7 @@
]
}
},
- "minzoom": 14,
+ "minzoom": 17,
"title": {
"render": {
"en": "Barrier",
From 3606a5d1602d96cb19dae1b918ab7207009f25dd Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Thu, 22 Jul 2021 12:49:18 +0200
Subject: [PATCH 44/71] Try to fix build fail after color scheme change
---
assets/layers/crossings/crossings.json | 2 +-
assets/themes/cycle_infra/cycle_infra.json | 63 +++++++++++++++++-----
2 files changed, 50 insertions(+), 15 deletions(-)
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
index 4521e57d9d..56959d73e7 100644
--- a/assets/layers/crossings/crossings.json
+++ b/assets/layers/crossings/crossings.json
@@ -16,7 +16,7 @@
]
}
},
- "minzoom": 14,
+ "minzoom": 17,
"title": {
"render": {
"en": "Crossing",
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 56b39046a4..e5437ad57b 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -17,13 +17,14 @@
"nl"
],
"maintainer": "",
+ "defaultBackgroundId": "CartoDB.Positron",
"icon": "./assets/svg/cycle-infra.svg",
"version": "0",
"startLat": 51,
"startLon": 3.75,
"startZoom": 11,
"widenFactor": 0.05,
- "socialImage": "",
+ "socialImage": "./assets/svg/cycle-infra.svg",
"enableDownload": true,
"layers": [
{
@@ -777,29 +778,63 @@
"render": "#aaaaaa",
"mappings": [
{
- "if": {
- "or": [
- "highway=cycleway",
- "highway=path"
- ]
- },
- "then": "#00ff00"
+ "if": "highway=cycleway",
+ "then": "rgba(0, 189, 141, 0.7)"
+ },
+ {
+ "if": "highway=path",
+ "then": "rgba(204, 74, 207, 0.7)"
},
{
"if": "cycleway=track",
- "then": "#45c445"
+ "then": "rgba(113, 3, 200, 0.7)"
},
{
"if": "cycleway=shared_lane",
- "then": "#ff0000"
+ "then": "rgba(74, 59, 247, 0.7)"
},
{
"if": "cycleway=lane",
- "then": "#ff9900"
+ "then": "rgba(254, 155, 6, 0.9)"
},
{
"if": "cyclestreet=yes",
- "then": "#0000ff"
+ "then": "rgba(57, 159, 191, 0.7)"
+ }
+ ]
+ },
+ "dashArray": {
+ "render": "",
+ "mappings": [
+ {
+ "if": {
+ "or": [
+ "oneway=yes",
+ {
+ "or": [
+ "highway=cycleway",
+ "highway=path"
+ ]
+ }
+ ]
+ },
+ "then": ""
+ },
+ {
+ "if": "cycleway=track",
+ "then": "30 15"
+ },
+ {
+ "if": "cycleway=shared_lane",
+ "then": "15 30"
+ },
+ {
+ "if": "cycleway=lane",
+ "then": "25 15 15 15 25"
+ },
+ {
+ "if": "cyclestreet=yes",
+ "then": ""
}
]
},
@@ -826,7 +861,7 @@
]
}
},
- "minzoom": 19,
+ "minzoom": 14,
"wayHandling": 0,
"title": {
"render": {
@@ -989,7 +1024,7 @@
]
}
},
- "minzoom": 14,
+ "minzoom": 17,
"title": {
"render": {
"en": "Barrier",
From 759edb802d1cc2dfe979973263cd1d1efc55bff0 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 22 Jul 2021 15:56:49 +0200
Subject: [PATCH 45/71] Update translations
---
.vscode/settings.json | 7 +------
assets/themes/cycle_infra/cycle_infra.json | 4 +---
langs/themes/en.json | 6 +++---
langs/themes/nl.json | 4 ++--
4 files changed, 7 insertions(+), 14 deletions(-)
diff --git a/.vscode/settings.json b/.vscode/settings.json
index b4a73d7d4b..37441beed9 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,8 +1,3 @@
{
- "files.eol": "\n",
- "workbench.colorCustomizations": {
- "activityBar.background": "#551907",
- "titleBar.activeBackground": "#78230A",
- "titleBar.activeForeground": "#FFFBFA"
- }
+ "files.eol": "\n"
}
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index f5460ae6d7..4d82a79e6d 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -836,11 +836,9 @@
"if": "cyclestreet=yes",
"then": ""
}
-
]
},
- "presets": [
- ]
+ "presets": []
},
{
"id": "all_streets",
diff --git a/langs/themes/en.json b/langs/themes/en.json
index f02d48c6e7..a6a96f2d0a 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -695,7 +695,7 @@
"cycle_infra": {
"title": "Bicycle infrastructure",
"shortDescription": "A map where you can view and edit things related to the bicycle infrastructure.",
- "description": "A map where you can view and edit things related to the bicycle infrastructure made during osoc21.",
+ "description": "A map where you can view and edit things related to the bicycle infrastructure. Made during #osoc21.",
"layers": {
"0": {
"name": "Cycleways",
@@ -1089,10 +1089,10 @@
"then": "Double, two barriers behind each other "
},
"2": {
- "then": "Triple, three barier behind each other "
+ "then": "Triple, three barriers behind each other "
},
"3": {
- "then": "Squeeze gate, gap is smaller at top, then at bottom "
+ "then": "Squeeze gate, gap is smaller at top, than at the bottom "
}
}
},
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index 891cbe8ae3..a7ea79a126 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -551,7 +551,7 @@
"cycle_infra": {
"title": "Fietsinfrastructuur",
"shortDescription": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken.",
- "description": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken gemaakt tijdens osoc21.",
+ "description": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken. Gemaakt tijdens #osoc21.",
"layers": {
"0": {
"name": "Fietspaden",
@@ -580,7 +580,7 @@
"question": "Wat voor fietspad is hier?",
"mappings": {
"0": {
- "then": "Er is een fietssugestiestrook"
+ "then": "Er is een fietssuggestiestrook"
},
"1": {
"then": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)"
From dce06846c4df7658c809eb37c7afe31892aca392 Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Thu, 22 Jul 2021 16:16:52 +0200
Subject: [PATCH 46/71] Change Base layer
---
assets/themes/cycle_infra/cycle_infra.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index f5460ae6d7..90273ff472 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -17,7 +17,7 @@
"nl"
],
"maintainer": "",
- "defaultBackgroundId": "CartoDB.Positron",
+ "defaultBackgroundId": "CartoDB.Voyager",
"icon": "./assets/svg/cycle-infra.svg",
"version": "0",
"startLat": 51,
From 7b2c0489741107d4722c4849b74ec260f2520411 Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Thu, 22 Jul 2021 16:52:49 +0200
Subject: [PATCH 47/71] Adds icons for street & bicycleway + attributons
---
assets/themes/cycle_infra/bicycleway.svg | 11 +++++++++++
assets/themes/cycle_infra/cycle_infra.json | 4 ++--
assets/themes/cycle_infra/license_info.json | 20 ++++++++++++++++++++
assets/themes/cycle_infra/street.svg | 14 ++++++++++++++
4 files changed, 47 insertions(+), 2 deletions(-)
create mode 100644 assets/themes/cycle_infra/bicycleway.svg
create mode 100644 assets/themes/cycle_infra/street.svg
diff --git a/assets/themes/cycle_infra/bicycleway.svg b/assets/themes/cycle_infra/bicycleway.svg
new file mode 100644
index 0000000000..dbbc55590a
--- /dev/null
+++ b/assets/themes/cycle_infra/bicycleway.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index f6adc7bfa0..c35a4fa15e 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -766,7 +766,7 @@
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
- "render": "./assets/svg/bug.svg"
+ "render": "./assets/themes/cycle_infra/bicycleway.svg"
},
"width": {
"render": "8"
@@ -875,7 +875,7 @@
}
]
},
- "icon": "./assets/svg/bug.svg",
+ "icon": "./assets/themes/cycle_infra/street.svg",
"width": "5",
"color": {
"render": "#aaaaaa",
diff --git a/assets/themes/cycle_infra/license_info.json b/assets/themes/cycle_infra/license_info.json
index 9f7263bf57..dca558b1fc 100644
--- a/assets/themes/cycle_infra/license_info.json
+++ b/assets/themes/cycle_infra/license_info.json
@@ -78,5 +78,25 @@
"sources": [
"https://wiki.openstreetmap.org/wiki/File:Cycle_barrier_squeeze.png"
]
+ },
+ {
+ "authors": [
+ "Tobias Zwick"
+ ],
+ "path": "street.svg",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/street.svg"
+ ]
+ },
+ {
+ "authors": [
+ "Tobias Zwick"
+ ],
+ "path": "bicycleway.svg",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/bicycleway.svg"
+ ]
}
]
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/street.svg b/assets/themes/cycle_infra/street.svg
new file mode 100644
index 0000000000..796df93b2a
--- /dev/null
+++ b/assets/themes/cycle_infra/street.svg
@@ -0,0 +1,14 @@
+
+
From eed59ac916976c3aa7c136a393ff1f559179f59e Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 22 Jul 2021 17:00:54 +0200
Subject: [PATCH 48/71] Added supplementary traffic_sign
---
assets/themes/cycle_infra/cycle_infra.json | 194 +++++++++++++++++++-
assets/themes/cycle_infra/license_info.json | 60 ++++++
langs/themes/en.json | 56 +++++-
langs/themes/nl.json | 56 +++++-
4 files changed, 358 insertions(+), 8 deletions(-)
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index c35a4fa15e..fcc1289b5a 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -585,7 +585,8 @@
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
- "segregated=yes"
+ "cycleway:foot=designated",
+ "cycleway:segregated=yes"
]
},
{
@@ -596,7 +597,8 @@
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
- "segregated=no"
+ "cycleway:foot=designated",
+ "cycleway:segregated=no"
]
},
{
@@ -626,7 +628,13 @@
"en": "Compulsory cycleway ",
"nl": "Verplicht fietspad "
},
- "hideInAnswer": "_country!=be"
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "bicycle=designated",
+ "mofa=designated",
+ "moped=yes",
+ "speed_pedelec=yes"
+ ]
},
{
"if": "traffic_sign=BE:D9",
@@ -636,6 +644,11 @@
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
+ "foot=designated",
+ "bicycle=designated",
+ "mofa=designated",
+ "moped=no",
+ "speed_pedelec=no",
"segregated=yes"
]
},
@@ -647,11 +660,16 @@
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
+ "foot=designated",
+ "bicycle=designated",
+ "mofa=designated",
+ "moped=no",
+ "speed_pedelec=no",
"segregated=no"
]
},
{
- "if": "cycleway:traffic_sign=none",
+ "if": "traffic_sign=none",
"then": {
"en": "No traffic sign present",
"nl": "Geen verkeersbord aanwezig"
@@ -659,6 +677,174 @@
}
]
},
+ {
+ "question": {
+ "en": "Does the traffic sign D7 () have a supplementary sign?",
+ "nl": "Heeft het verkeersbord D7 () een onderbord?"
+ },
+ "condition": "cycleway:traffic_sign=BE:D7",
+ "mappings": [
+ {
+ "if": "cycleway:traffic_sign=BE:D7;BE:M6",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "cycleway:moped=designated"
+ ]
+ },
+ {
+ "if": "cycleway:traffic_sign=BE:D7;BE:M13",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "cycleway:speed_pedelec=designated"
+ ]
+ },
+ {
+ "if": "cycleway:traffic_sign=BE:D7;BE:M14",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "cycleway:moped=designated",
+ "cycleway:speed_pedelec=designated"
+ ]
+ },
+ {
+ "if": "cycleway:traffic_sign=BE:D7;BE:M7",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "cycleway:moped=no"
+ ]
+ },
+ {
+ "if": "cycleway:traffic_sign=BE:D7;BE:M15",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "cycleway:speed_pedelec=no"
+ ]
+ },
+ {
+ "if": "cycleway:traffic_sign=BE:D7;BE:M16",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "cycleway:moped=designated",
+ "cycleway:speed_pedelec=no"
+ ]
+ },
+ {
+ "if": "cycleway:traffic_sign:supplementary=none",
+ "then": {
+ "en": "No supplementary traffic sign present",
+ "nl": "Geen onderbord aanwezig"
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "Does the traffic sign D7 () have a supplementary sign?",
+ "nl": "Heeft het verkeersbord D7 () een onderbord?"
+ },
+ "condition": "traffic_sign=BE:D7",
+ "mappings": [
+ {
+ "if": "traffic_sign=BE:D7;BE:M6",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "moped=designated"
+ ]
+ },
+ {
+ "if": "traffic_sign=BE:D7;BE:M13",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "speed_pedelec=designated"
+ ]
+ },
+ {
+ "if": "traffic_sign=BE:D7;BE:M14",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "moped=designated",
+ "speed_pedelec=designated"
+ ]
+ },
+ {
+ "if": "traffic_sign=BE:D7;BE:M7",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "moped=no"
+ ]
+ },
+ {
+ "if": ":traffic_sign=BE:D7;BE:M15",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "speed_pedelec=no"
+ ]
+ },
+ {
+ "if": "traffic_sign=BE:D7;BE:M16",
+ "then": {
+ "en": "",
+ "nl": ""
+ },
+ "hideInAnswer": "_country!=be",
+ "addExtraTags": [
+ "moped=designated",
+ "speed_pedelec=no"
+ ]
+ },
+ {
+ "if": "traffic_sign:supplementary=none",
+ "then": {
+ "en": "No supplementary traffic sign present",
+ "nl": "Geen onderbord aanwezig"
+ }
+ }
+ ]
+ },
{
"render": {
"en": "The buffer besides this cycleway is {cycleway:buffer} m",
diff --git a/assets/themes/cycle_infra/license_info.json b/assets/themes/cycle_infra/license_info.json
index dca558b1fc..ed362f0a3a 100644
--- a/assets/themes/cycle_infra/license_info.json
+++ b/assets/themes/cycle_infra/license_info.json
@@ -29,6 +29,66 @@
"https://commons.wikimedia.org/wiki/File:Belgian_road_sign_D10.svg"
]
},
+ {
+ "authors": [
+ "Belgische Wetgever"
+ ],
+ "path": "Belgian_traffic_sign_M6.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Belgian_traffic_sign_M6.svg"
+ ]
+ },
+ {
+ "authors": [
+ "Belgische Wetgever"
+ ],
+ "path": "Belgian_traffic_sign_M7.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Belgian_traffic_sign_M7.svg"
+ ]
+ },
+ {
+ "authors": [
+ "Belgische Wetgever"
+ ],
+ "path": "Belgian_traffic_sign_M13.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Belgian_traffic_sign_M13.svg"
+ ]
+ },
+ {
+ "authors": [
+ "Belgische Wetgever"
+ ],
+ "path": "Belgian_traffic_sign_M14.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Belgian_traffic_sign_M14.svg"
+ ]
+ },
+ {
+ "authors": [
+ "Belgische Wetgever"
+ ],
+ "path": "Belgian_traffic_sign_M15.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Belgian_traffic_sign_M15.svg"
+ ]
+ },
+ {
+ "authors": [
+ "Belgische Wetgever"
+ ],
+ "path": "Belgian_traffic_sign_M16.svg",
+ "license": "CC0",
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Belgian_traffic_sign_M16.svg"
+ ]
+ },
{
"authors": [
"Supaplex030"
diff --git a/langs/themes/en.json b/langs/themes/en.json
index a6a96f2d0a..6fabda6ed1 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -934,10 +934,62 @@
}
},
"11": {
+ "question": "Does the traffic sign D7 () have a supplementary sign?",
+ "mappings": {
+ "0": {
+ "then": ""
+ },
+ "1": {
+ "then": ""
+ },
+ "2": {
+ "then": ""
+ },
+ "3": {
+ "then": ""
+ },
+ "4": {
+ "then": ""
+ },
+ "5": {
+ "then": ""
+ },
+ "6": {
+ "then": "No supplementary traffic sign present"
+ }
+ }
+ },
+ "12": {
+ "question": "Does the traffic sign D7 () have a supplementary sign?",
+ "mappings": {
+ "0": {
+ "then": ""
+ },
+ "1": {
+ "then": ""
+ },
+ "2": {
+ "then": ""
+ },
+ "3": {
+ "then": ""
+ },
+ "4": {
+ "then": ""
+ },
+ "5": {
+ "then": ""
+ },
+ "6": {
+ "then": "No supplementary traffic sign present"
+ }
+ }
+ },
+ "13": {
"render": "The buffer besides this cycleway is {cycleway:buffer} m",
"question": "How wide is the gap between the cycleway and the road?"
},
- "12": {
+ "14": {
"question": "How is this cycleway seperated from the road?",
"mappings": {
"0": {
@@ -954,7 +1006,7 @@
}
}
},
- "13": {
+ "15": {
"question": "How is this cycleway seperated from the road?",
"mappings": {
"0": {
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index a7ea79a126..3f20598ae6 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -738,10 +738,62 @@
}
},
"11": {
+ "question": "Heeft het verkeersbord D7 () een onderbord?",
+ "mappings": {
+ "0": {
+ "then": ""
+ },
+ "1": {
+ "then": ""
+ },
+ "2": {
+ "then": ""
+ },
+ "3": {
+ "then": ""
+ },
+ "4": {
+ "then": ""
+ },
+ "5": {
+ "then": ""
+ },
+ "6": {
+ "then": "Geen onderbord aanwezig"
+ }
+ }
+ },
+ "12": {
+ "question": "Heeft het verkeersbord D7 () een onderbord?",
+ "mappings": {
+ "0": {
+ "then": ""
+ },
+ "1": {
+ "then": ""
+ },
+ "2": {
+ "then": ""
+ },
+ "3": {
+ "then": ""
+ },
+ "4": {
+ "then": ""
+ },
+ "5": {
+ "then": ""
+ },
+ "6": {
+ "then": "Geen onderbord aanwezig"
+ }
+ }
+ },
+ "13": {
"render": "De schrikafstand van dit fietspad is {cycleway:buffer} m",
"question": "Hoe breed is de ruimte tussen het fietspad en de weg?"
},
- "12": {
+ "14": {
"question": "Hoe is dit fietspad gescheiden van de weg?",
"mappings": {
"0": {
@@ -758,7 +810,7 @@
}
}
},
- "13": {
+ "15": {
"question": "Hoe is dit fietspad gescheiden van de weg?",
"mappings": {
"0": {
From 8e232b88bc9c0bcd7a40e52cba87f97051a6e8ee Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Thu, 22 Jul 2021 21:18:00 +0200
Subject: [PATCH 49/71] Add sign images
---
.../cycle_infra/Belgian_traffic_sign_M13.svg | 136 +++++++++++++++
.../cycle_infra/Belgian_traffic_sign_M14.svg | 158 +++++++++++++++++
.../cycle_infra/Belgian_traffic_sign_M15.svg | 132 +++++++++++++++
.../cycle_infra/Belgian_traffic_sign_M16.svg | 159 ++++++++++++++++++
.../cycle_infra/Belgian_traffic_sign_M6.svg | 146 ++++++++++++++++
.../cycle_infra/Belgian_traffic_sign_M7.svg | 142 ++++++++++++++++
6 files changed, 873 insertions(+)
create mode 100644 assets/themes/cycle_infra/Belgian_traffic_sign_M13.svg
create mode 100644 assets/themes/cycle_infra/Belgian_traffic_sign_M14.svg
create mode 100644 assets/themes/cycle_infra/Belgian_traffic_sign_M15.svg
create mode 100644 assets/themes/cycle_infra/Belgian_traffic_sign_M16.svg
create mode 100644 assets/themes/cycle_infra/Belgian_traffic_sign_M6.svg
create mode 100644 assets/themes/cycle_infra/Belgian_traffic_sign_M7.svg
diff --git a/assets/themes/cycle_infra/Belgian_traffic_sign_M13.svg b/assets/themes/cycle_infra/Belgian_traffic_sign_M13.svg
new file mode 100644
index 0000000000..abdbfe8b2a
--- /dev/null
+++ b/assets/themes/cycle_infra/Belgian_traffic_sign_M13.svg
@@ -0,0 +1,136 @@
+
+
+
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/Belgian_traffic_sign_M14.svg b/assets/themes/cycle_infra/Belgian_traffic_sign_M14.svg
new file mode 100644
index 0000000000..5f0c40bda6
--- /dev/null
+++ b/assets/themes/cycle_infra/Belgian_traffic_sign_M14.svg
@@ -0,0 +1,158 @@
+
+
+
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/Belgian_traffic_sign_M15.svg b/assets/themes/cycle_infra/Belgian_traffic_sign_M15.svg
new file mode 100644
index 0000000000..470c6aadd3
--- /dev/null
+++ b/assets/themes/cycle_infra/Belgian_traffic_sign_M15.svg
@@ -0,0 +1,132 @@
+
+
+
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/Belgian_traffic_sign_M16.svg b/assets/themes/cycle_infra/Belgian_traffic_sign_M16.svg
new file mode 100644
index 0000000000..5933626229
--- /dev/null
+++ b/assets/themes/cycle_infra/Belgian_traffic_sign_M16.svg
@@ -0,0 +1,159 @@
+
+
+
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/Belgian_traffic_sign_M6.svg b/assets/themes/cycle_infra/Belgian_traffic_sign_M6.svg
new file mode 100644
index 0000000000..3d4124992a
--- /dev/null
+++ b/assets/themes/cycle_infra/Belgian_traffic_sign_M6.svg
@@ -0,0 +1,146 @@
+
+
+
\ No newline at end of file
diff --git a/assets/themes/cycle_infra/Belgian_traffic_sign_M7.svg b/assets/themes/cycle_infra/Belgian_traffic_sign_M7.svg
new file mode 100644
index 0000000000..f72de9e965
--- /dev/null
+++ b/assets/themes/cycle_infra/Belgian_traffic_sign_M7.svg
@@ -0,0 +1,142 @@
+
+
+
\ No newline at end of file
From 8d52bbc637e1d4693ac4cba3d8ba7f534a1b3be2 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Fri, 23 Jul 2021 15:51:51 +0200
Subject: [PATCH 50/71] Fix version number
---
Models/Constants.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Models/Constants.ts b/Models/Constants.ts
index 75423405e4..33a52c40f6 100644
--- a/Models/Constants.ts
+++ b/Models/Constants.ts
@@ -2,7 +2,7 @@ import { Utils } from "../Utils";
export default class Constants {
- public static vNumber = "0.8.4-rc3";
+ public static vNumber = "0.8.4";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {
From af18870bf842885d22c1b44aab68a4dedc0cbcd7 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sat, 24 Jul 2021 02:42:37 +0200
Subject: [PATCH 51/71] Update docs
---
Docs/SpecialInputElements.md | 12 ++-
Docs/TagInfo/mapcomplete_cyclofix.json | 19 ++++
Docs/URL_Parameters.md | 124 +++++++++++--------------
3 files changed, 79 insertions(+), 76 deletions(-)
diff --git a/Docs/SpecialInputElements.md b/Docs/SpecialInputElements.md
index 3eb09bbb2b..3249c0b918 100644
--- a/Docs/SpecialInputElements.md
+++ b/Docs/SpecialInputElements.md
@@ -14,6 +14,14 @@ A string, but allows input of longer strings more comfortably (a text area)
A date
+## direction
+
+A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)
+
+## length
+
+A geographical length in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma seperated) ], e.g. `["21", "map,photo"]
+
## wikidata
A wikidata identifier, e.g. Q42
@@ -30,10 +38,6 @@ A positive number or zero
A strict positive number
-## direction
-
-A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)
-
## float
A decimal
diff --git a/Docs/TagInfo/mapcomplete_cyclofix.json b/Docs/TagInfo/mapcomplete_cyclofix.json
index fc5f1d19d2..7e266843e8 100644
--- a/Docs/TagInfo/mapcomplete_cyclofix.json
+++ b/Docs/TagInfo/mapcomplete_cyclofix.json
@@ -588,6 +588,25 @@
"description": "Layer 'Bike stations (repair, pump or both)' shows manometer=broken with a fixed text, namely 'There is manometer but it is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "broken"
},
+ {
+ "key": "level",
+ "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
+ },
+ {
+ "key": "location",
+ "description": "Layer 'Bike stations (repair, pump or both)' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "underground"
+ },
+ {
+ "key": "level",
+ "description": "Layer 'Bike stations (repair, pump or both)' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "0"
+ },
+ {
+ "key": "level",
+ "description": "Layer 'Bike stations (repair, pump or both)' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "1"
+ },
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
diff --git a/Docs/URL_Parameters.md b/Docs/URL_Parameters.md
index 5c3158fd7e..5b62d45996 100644
--- a/Docs/URL_Parameters.md
+++ b/Docs/URL_Parameters.md
@@ -20,158 +20,138 @@ the URL-parameters are stated in the part between the `?` and the `#`. There are
Finally, the URL-hash is the part after the `#`. It is `node/1234` in this case.
-backend
----------
-
-The OSM backend to use - can be used to redirect mapcomplete to the testing backend when using 'osm-test' The default value is _osm_
-
-
-test
-------
-
-If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org The default value is _false_
-
-
-layout
---------
-
-The layout to load into MapComplete The default value is __
-
-
-userlayout
-------------
-
-If not 'false', a custom (non-official) theme is loaded. This custom layout can be done in multiple ways:
-
-- The hash of the URL contains a base64-encoded .json-file containing the theme definition
-- The hash of the URL contains a lz-compressed .json-file, as generated by the custom theme generator
-- The parameter itself is an URL, in which case that URL will be downloaded. It should point to a .json of a theme The default value is _false_
-
-
-layer-control-toggle
+ layer-control-toggle
----------------------
-Whether or not the layer control is shown The default value is _false_
+ Whether or not the layer control is shown The default value is _false_
-tab
+ tab
-----
-The tab that is shown in the welcome-message. 0 = the explanation of the theme,1 = OSM-credits, 2 = sharescreen, 3 = more themes, 4 = about mapcomplete (user must be logged in and have >50 changesets) The default value is _0_
+ The tab that is shown in the welcome-message. 0 = the explanation of the theme,1 = OSM-credits, 2 = sharescreen, 3 = more themes, 4 = about mapcomplete (user must be logged in and have >50 changesets) The default value is _0_
-z
+ z
---
-The initial/current zoom level The default value is _14_
+ The initial/current zoom level The default value is _0_
-lat
+ lat
-----
-The initial/current latitude The default value is _51.2095_
+ The initial/current latitude The default value is _0_
-lon
+ lon
-----
-The initial/current longitude of the app The default value is _3.2228_
+ The initial/current longitude of the app The default value is _0_
-fs-userbadge
+ fs-userbadge
--------------
-Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus disables editing all together, effectively putting MapComplete into read-only mode. The default value is _true_
+ Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus disables editing all together, effectively putting MapComplete into read-only mode. The default value is _true_
-fs-search
+ fs-search
-----------
-Disables/Enables the search bar The default value is _true_
+ Disables/Enables the search bar The default value is _true_
-fs-layers
+ fs-layers
-----------
-Disables/Enables the layer control The default value is _true_
+ Disables/Enables the layer control The default value is _true_
-fs-add-new
+ fs-add-new
------------
-Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) The default value is _true_
+ Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) The default value is _true_
-fs-welcome-message
+ fs-welcome-message
--------------------
-Disables/enables the help menu or welcome message The default value is _true_
+ Disables/enables the help menu or welcome message The default value is _true_
-fs-iframe
+ fs-iframe
-----------
-Disables/Enables the iframe-popup The default value is _false_
+ Disables/Enables the iframe-popup The default value is _false_
-fs-more-quests
+ fs-more-quests
----------------
-Disables/Enables the 'More Quests'-tab in the welcome message The default value is _true_
+ Disables/Enables the 'More Quests'-tab in the welcome message The default value is _true_
-fs-share-screen
+ fs-share-screen
-----------------
-Disables/Enables the 'Share-screen'-tab in the welcome message The default value is _true_
+ Disables/Enables the 'Share-screen'-tab in the welcome message The default value is _true_
-fs-geolocation
+ fs-geolocation
----------------
-Disables/Enables the geolocation button The default value is _true_
+ Disables/Enables the geolocation button The default value is _true_
-fs-all-questions
+ fs-all-questions
------------------
-Always show all questions The default value is _false_
+ Always show all questions The default value is _false_
-fs-export
+ fs-export
-----------
-If set, enables the 'download'-button to download everything as geojson The default value is _false_
+ If set, enables the 'download'-button to download everything as geojson The default value is _false_
-fake-user
+ test
+------
+
+ If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org The default value is _false_
+
+
+ fake-user
-----------
-If true, 'dryrun' mode is activated and a fake user account is loaded The default value is _false_
+ If true, 'dryrun' mode is activated and a fake user account is loaded The default value is _false_
-debug
+ debug
-------
-If true, shows some extra debugging help such as all the available tags on every object The default value is _false_
+ If true, shows some extra debugging help such as all the available tags on every object The default value is _false_
-custom-css
+ backend
+---------
+
+ The OSM backend to use - can be used to redirect mapcomplete to the testing backend when using 'osm-test' The default value is _osm_
+
+
+ custom-css
------------
-If specified, the custom css from the given link will be loaded additionaly The default value is __
+ If specified, the custom css from the given link will be loaded additionaly The default value is __
-background
+ background
------------
-The id of the background layer to start with The default value is _osm_
+ The id of the background layer to start with The default value is _osm_
-oauth_token
--------------
-
-Used to complete the login No default value set
layer-
------------------
From 124220feaabb6c052880ce98dfa6c10df0b80a65 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sat, 24 Jul 2021 13:24:33 +0200
Subject: [PATCH 52/71] Add taginfo for openwindpower
---
.../TagInfo/mapcomplete_openwindpowermap.json | 55 +++++++++++++++++++
1 file changed, 55 insertions(+)
create mode 100644 Docs/TagInfo/mapcomplete_openwindpowermap.json
diff --git a/Docs/TagInfo/mapcomplete_openwindpowermap.json b/Docs/TagInfo/mapcomplete_openwindpowermap.json
new file mode 100644
index 0000000000..6fe84a82b8
--- /dev/null
+++ b/Docs/TagInfo/mapcomplete_openwindpowermap.json
@@ -0,0 +1,55 @@
+{
+ "data_format": 1,
+ "project": {
+ "name": "MapComplete OpenWindPowerMap",
+ "description": "A map for showing and editing wind turbines",
+ "project_url": "https://mapcomplete.osm.be/openwindpowermap",
+ "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/openwindpowermap/wind_turbine.svg",
+ "contact_name": "Pieter Vander Vennet, Seppe Santens",
+ "contact_email": "pietervdvn@posteo.net"
+ },
+ "tags": [
+ {
+ "key": "generator:source",
+ "description": "The MapComplete theme OpenWindPowerMap has a layer wind turbine showing features with this tag",
+ "value": "wind"
+ },
+ {
+ "key": "generator:output:electricity",
+ "description": "Layer 'wind turbine' shows and asks freeform values for key 'generator:output:electricity' (in the MapComplete.osm.be theme 'OpenWindPowerMap')"
+ },
+ {
+ "key": "operator",
+ "description": "Layer 'wind turbine' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'OpenWindPowerMap')"
+ },
+ {
+ "key": "height",
+ "description": "Layer 'wind turbine' shows and asks freeform values for key 'height' (in the MapComplete.osm.be theme 'OpenWindPowerMap')"
+ },
+ {
+ "key": "rotor:diameter",
+ "description": "Layer 'wind turbine' shows and asks freeform values for key 'rotor:diameter' (in the MapComplete.osm.be theme 'OpenWindPowerMap')"
+ },
+ {
+ "key": "start_date",
+ "description": "Layer 'wind turbine' shows and asks freeform values for key 'start_date' (in the MapComplete.osm.be theme 'OpenWindPowerMap')"
+ },
+ {
+ "key": "image",
+ "description": "The layer 'wind turbine allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "mapillary",
+ "description": "The layer 'wind turbine allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikidata",
+ "description": "The layer 'wind turbine allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikipedia",
+ "description": "The layer 'wind turbine allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ }
+ ]
+}
\ No newline at end of file
From 3b48e3f7694ec9e3e20cfe75a8599ec4de8f5e56 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Sat, 24 Jul 2021 13:28:11 +0200
Subject: [PATCH 53/71] Add missing license
---
assets/svg/license_info.json | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json
index 2d0848c432..4e1b331445 100644
--- a/assets/svg/license_info.json
+++ b/assets/svg/license_info.json
@@ -1,4 +1,12 @@
[
+ {
+ "authors": [
+ "Pieter Vander Vennet"
+ ],
+ "path": "length-crosshair.svg",
+ "license": "CC0",
+ "sources": []
+ },
{
"authors": [
"Pieter Vander Vennet"
From d12d8b09fa939c8ebd48a32f5a6f5c4c1fba7289 Mon Sep 17 00:00:00 2001
From: Robin van der Linde
Date: Sat, 24 Jul 2021 15:30:19 +0200
Subject: [PATCH 54/71] Fix question wrong way round
---
assets/layers/crossings/crossings.json | 4 ++--
langs/layers/nl.json | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
index 56959d73e7..4525575069 100644
--- a/assets/layers/crossings/crossings.json
+++ b/assets/layers/crossings/crossings.json
@@ -230,14 +230,14 @@
"if": "red_turn:right:bicycle=yes",
"then": {
"en": "A cyclist can turn right if the light is red",
- "nl": "Een fietser mag niet rechtsaf slaan als het licht rood is"
+ "nl": "Een fietser mag wel rechtsaf slaan als het licht rood is"
}
},
{
"if": "red_turn:right:bicycle=no",
"then": {
"en": "A cyclist can not turn right if the light is red",
- "nl": "Een fietser mag rechtsaf slaan als het licht rood is"
+ "nl": "Een fietser mag niet rechtsaf slaan als het licht rood is"
}
}
]
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index 87545a440b..4e8ff9af65 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -862,10 +862,10 @@
"question": "Mag een fietser rechtsaf slaan als het licht rood is?",
"mappings": {
"0": {
- "then": "Een fietser mag niet rechtsaf slaan als het licht rood is"
+ "then": "Een fietser mag wel rechtsaf slaan als het licht rood is"
},
"1": {
- "then": "Een fietser mag rechtsaf slaan als het licht rood is"
+ "then": "Een fietser mag niet rechtsaf slaan als het licht rood is"
}
}
}
From df6a6bbbde457d7f63df2cea8957cbdf0f900e41 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Mon, 26 Jul 2021 09:46:54 +0200
Subject: [PATCH 55/71] Enable high accuracy for watchPosition, possible fix
for #444
---
Logic/Actors/GeoLocationHandler.ts | 499 +++++++++++++++--------------
1 file changed, 251 insertions(+), 248 deletions(-)
diff --git a/Logic/Actors/GeoLocationHandler.ts b/Logic/Actors/GeoLocationHandler.ts
index 6d37e6f4ed..7bf736e3fa 100644
--- a/Logic/Actors/GeoLocationHandler.ts
+++ b/Logic/Actors/GeoLocationHandler.ts
@@ -1,262 +1,265 @@
import * as L from "leaflet";
-import { UIEventSource } from "../UIEventSource";
-import { Utils } from "../../Utils";
+import {UIEventSource} from "../UIEventSource";
+import {Utils} from "../../Utils";
import Svg from "../../Svg";
import Img from "../../UI/Base/Img";
-import { LocalStorageSource } from "../Web/LocalStorageSource";
+import {LocalStorageSource} from "../Web/LocalStorageSource";
import LayoutConfig from "../../Customizations/JSON/LayoutConfig";
-import { VariableUiElement } from "../../UI/Base/VariableUIElement";
+import {VariableUiElement} from "../../UI/Base/VariableUIElement";
export default class GeoLocationHandler extends VariableUiElement {
- /**
- * Wether or not the geolocation is active, aka the user requested the current location
- * @private
- */
- private readonly _isActive: UIEventSource;
+ /**
+ * Wether or not the geolocation is active, aka the user requested the current location
+ * @private
+ */
+ private readonly _isActive: UIEventSource;
- /**
- * Wether or not the geolocation is locked, aka the user requested the current location and wants the crosshair to follow the user
- * @private
- */
- private readonly _isLocked: UIEventSource;
+ /**
+ * Wether or not the geolocation is locked, aka the user requested the current location and wants the crosshair to follow the user
+ * @private
+ */
+ private readonly _isLocked: UIEventSource;
- /**
- * The callback over the permission API
- * @private
- */
- private readonly _permission: UIEventSource;
- /***
- * The marker on the map, in order to update it
- * @private
- */
- private _marker: L.Marker;
- /**
- * Literally: _currentGPSLocation.data != undefined
- * @private
- */
- private readonly _hasLocation: UIEventSource;
- private readonly _currentGPSLocation: UIEventSource<{
- latlng: any;
- accuracy: number;
- }>;
- /**
- * Kept in order to update the marker
- * @private
- */
- private readonly _leafletMap: UIEventSource;
- /**
- * The date when the user requested the geolocation. If we have a location, it'll autozoom to it the first 30 secs
- * @private
- */
- private _lastUserRequest: Date;
- /**
- * A small flag on localstorage. If the user previously granted the geolocation, it will be set.
- * On firefox, the permissions api is broken (probably fingerprint resistiance) and "granted + don't ask again" doesn't stick between sessions.
- *
- * Instead, we set this flag. If this flag is set upon loading the page, we start geolocating immediately.
- * If the user denies the geolocation this time, we unset this flag
- * @private
- */
- private readonly _previousLocationGrant: UIEventSource;
- private readonly _layoutToUse: UIEventSource;
+ /**
+ * The callback over the permission API
+ * @private
+ */
+ private readonly _permission: UIEventSource;
+ /***
+ * The marker on the map, in order to update it
+ * @private
+ */
+ private _marker: L.Marker;
+ /**
+ * Literally: _currentGPSLocation.data != undefined
+ * @private
+ */
+ private readonly _hasLocation: UIEventSource;
+ private readonly _currentGPSLocation: UIEventSource<{
+ latlng: any;
+ accuracy: number;
+ }>;
+ /**
+ * Kept in order to update the marker
+ * @private
+ */
+ private readonly _leafletMap: UIEventSource;
+ /**
+ * The date when the user requested the geolocation. If we have a location, it'll autozoom to it the first 30 secs
+ * @private
+ */
+ private _lastUserRequest: Date;
+ /**
+ * A small flag on localstorage. If the user previously granted the geolocation, it will be set.
+ * On firefox, the permissions api is broken (probably fingerprint resistiance) and "granted + don't ask again" doesn't stick between sessions.
+ *
+ * Instead, we set this flag. If this flag is set upon loading the page, we start geolocating immediately.
+ * If the user denies the geolocation this time, we unset this flag
+ * @private
+ */
+ private readonly _previousLocationGrant: UIEventSource;
+ private readonly _layoutToUse: UIEventSource;
- constructor(
- currentGPSLocation: UIEventSource<{ latlng: any; accuracy: number }>,
- leafletMap: UIEventSource,
- layoutToUse: UIEventSource
- ) {
- const hasLocation = currentGPSLocation.map(
- (location) => location !== undefined
- );
- const previousLocationGrant = LocalStorageSource.Get(
- "geolocation-permissions"
- );
- const isActive = new UIEventSource(false);
- const isLocked = new UIEventSource(false);
-
- super(
- hasLocation.map(
- (hasLocationData) => {
- if (isLocked.data) {
- return Svg.crosshair_locked_ui();
- } else if (hasLocationData) {
- return Svg.crosshair_blue_ui();
- } else if (isActive.data) {
- return Svg.crosshair_blue_center_ui();
- } else {
- return Svg.crosshair_ui();
- }
- },
- [isActive, isLocked]
- )
- );
- this._isActive = isActive;
- this._isLocked = isLocked;
- this._permission = new UIEventSource("");
- this._previousLocationGrant = previousLocationGrant;
- this._currentGPSLocation = currentGPSLocation;
- this._leafletMap = leafletMap;
- this._layoutToUse = layoutToUse;
- this._hasLocation = hasLocation;
- const self = this;
-
- const currentPointer = this._isActive.map(
- (isActive) => {
- if (isActive && !self._hasLocation.data) {
- return "cursor-wait";
- }
- return "cursor-pointer";
- },
- [this._hasLocation]
- );
- currentPointer.addCallbackAndRun((pointerClass) => {
- self.SetClass(pointerClass);
- });
-
- this.onClick(() => {
- if (self._hasLocation.data) {
- self._isLocked.setData(!self._isLocked.data);
- }
- self.init(true);
- });
- this.init(false);
-
- this._currentGPSLocation.addCallback((location) => {
- self._previousLocationGrant.setData("granted");
-
- const timeSinceRequest =
- (new Date().getTime() - (self._lastUserRequest?.getTime() ?? 0)) / 1000;
- if (timeSinceRequest < 30) {
- self.MoveToCurrentLoction(16);
- } else if (self._isLocked.data) {
- self.MoveToCurrentLoction();
- }
-
- let color = "#1111cc";
- try {
- color = getComputedStyle(document.body).getPropertyValue(
- "--catch-detail-color"
- );
- } catch (e) {
- console.error(e);
- }
- const icon = L.icon({
- iconUrl: Img.AsData(Svg.crosshair.replace(/#000000/g, color)),
- iconSize: [40, 40], // size of the icon
- iconAnchor: [20, 20], // point of the icon which will correspond to marker's location
- });
-
- const map = self._leafletMap.data;
-
- const newMarker = L.marker(location.latlng, { icon: icon });
- newMarker.addTo(map);
-
- if (self._marker !== undefined) {
- map.removeLayer(self._marker);
- }
- self._marker = newMarker;
- });
- }
-
- private init(askPermission: boolean) {
- const self = this;
-
- if (self._isActive.data) {
- self.MoveToCurrentLoction(16);
- return;
- }
-
- try {
- navigator?.permissions
- ?.query({ name: "geolocation" })
- ?.then(function (status) {
- console.log("Geolocation is already", status);
- if (status.state === "granted") {
- self.StartGeolocating(false);
- }
- self._permission.setData(status.state);
- status.onchange = function () {
- self._permission.setData(status.state);
- };
- });
- } catch (e) {
- console.error(e);
- }
-
- if (askPermission) {
- self.StartGeolocating(true);
- } else if (this._previousLocationGrant.data === "granted") {
- this._previousLocationGrant.setData("");
- self.StartGeolocating(false);
- }
- }
-
- private MoveToCurrentLoction(targetZoom?: number) {
- const location = this._currentGPSLocation.data;
- this._lastUserRequest = undefined;
-
- if (
- this._currentGPSLocation.data.latlng[0] === 0 &&
- this._currentGPSLocation.data.latlng[1] === 0
+ constructor(
+ currentGPSLocation: UIEventSource<{ latlng: any; accuracy: number }>,
+ leafletMap: UIEventSource,
+ layoutToUse: UIEventSource
) {
- console.debug("Not moving to GPS-location: it is null island");
- return;
- }
+ const hasLocation = currentGPSLocation.map(
+ (location) => location !== undefined
+ );
+ const previousLocationGrant = LocalStorageSource.Get(
+ "geolocation-permissions"
+ );
+ const isActive = new UIEventSource(false);
+ const isLocked = new UIEventSource(false);
- // We check that the GPS location is not out of bounds
- const b = this._layoutToUse.data.lockLocation;
- let inRange = true;
- if (b) {
- if (b !== true) {
- // B is an array with our locklocation
- inRange =
- b[0][0] <= location.latlng[0] &&
- location.latlng[0] <= b[1][0] &&
- b[0][1] <= location.latlng[1] &&
- location.latlng[1] <= b[1][1];
- }
- }
- if (!inRange) {
- console.log(
- "Not zooming to GPS location: out of bounds",
- b,
- location.latlng
- );
- } else {
- this._leafletMap.data.setView(location.latlng, targetZoom);
- }
- }
+ super(
+ hasLocation.map(
+ (hasLocationData) => {
+ if (isLocked.data) {
+ return Svg.crosshair_locked_ui();
+ } else if (hasLocationData) {
+ return Svg.crosshair_blue_ui();
+ } else if (isActive.data) {
+ return Svg.crosshair_blue_center_ui();
+ } else {
+ return Svg.crosshair_ui();
+ }
+ },
+ [isActive, isLocked]
+ )
+ );
+ this._isActive = isActive;
+ this._isLocked = isLocked;
+ this._permission = new UIEventSource("");
+ this._previousLocationGrant = previousLocationGrant;
+ this._currentGPSLocation = currentGPSLocation;
+ this._leafletMap = leafletMap;
+ this._layoutToUse = layoutToUse;
+ this._hasLocation = hasLocation;
+ const self = this;
- private StartGeolocating(zoomToGPS = true) {
- const self = this;
- console.log("Starting geolocation");
-
- this._lastUserRequest = zoomToGPS ? new Date() : new Date(0);
- if (self._permission.data === "denied") {
- self._previousLocationGrant.setData("");
- return "";
- }
- if (this._currentGPSLocation.data !== undefined) {
- this.MoveToCurrentLoction(16);
- }
-
- console.log("Searching location using GPS");
-
- if (self._isActive.data) {
- return;
- }
- self._isActive.setData(true);
-
- navigator.geolocation.watchPosition(
- function (position) {
- self._currentGPSLocation.setData({
- latlng: [position.coords.latitude, position.coords.longitude],
- accuracy: position.coords.accuracy,
+ const currentPointer = this._isActive.map(
+ (isActive) => {
+ if (isActive && !self._hasLocation.data) {
+ return "cursor-wait";
+ }
+ return "cursor-pointer";
+ },
+ [this._hasLocation]
+ );
+ currentPointer.addCallbackAndRun((pointerClass) => {
+ self.SetClass(pointerClass);
});
- },
- function () {
- console.warn("Could not get location with navigator.geolocation");
- }
- );
- }
+
+ this.onClick(() => {
+ if (self._hasLocation.data) {
+ self._isLocked.setData(!self._isLocked.data);
+ }
+ self.init(true);
+ });
+ this.init(false);
+
+ this._currentGPSLocation.addCallback((location) => {
+ self._previousLocationGrant.setData("granted");
+
+ const timeSinceRequest =
+ (new Date().getTime() - (self._lastUserRequest?.getTime() ?? 0)) / 1000;
+ if (timeSinceRequest < 30) {
+ self.MoveToCurrentLoction(16);
+ } else if (self._isLocked.data) {
+ self.MoveToCurrentLoction();
+ }
+
+ let color = "#1111cc";
+ try {
+ color = getComputedStyle(document.body).getPropertyValue(
+ "--catch-detail-color"
+ );
+ } catch (e) {
+ console.error(e);
+ }
+ const icon = L.icon({
+ iconUrl: Img.AsData(Svg.crosshair.replace(/#000000/g, color)),
+ iconSize: [40, 40], // size of the icon
+ iconAnchor: [20, 20], // point of the icon which will correspond to marker's location
+ });
+
+ const map = self._leafletMap.data;
+
+ const newMarker = L.marker(location.latlng, {icon: icon});
+ newMarker.addTo(map);
+
+ if (self._marker !== undefined) {
+ map.removeLayer(self._marker);
+ }
+ self._marker = newMarker;
+ });
+ }
+
+ private init(askPermission: boolean) {
+ const self = this;
+
+ if (self._isActive.data) {
+ self.MoveToCurrentLoction(16);
+ return;
+ }
+
+ try {
+ navigator?.permissions
+ ?.query({name: "geolocation"})
+ ?.then(function (status) {
+ console.log("Geolocation is already", status);
+ if (status.state === "granted") {
+ self.StartGeolocating(false);
+ }
+ self._permission.setData(status.state);
+ status.onchange = function () {
+ self._permission.setData(status.state);
+ };
+ });
+ } catch (e) {
+ console.error(e);
+ }
+
+ if (askPermission) {
+ self.StartGeolocating(true);
+ } else if (this._previousLocationGrant.data === "granted") {
+ this._previousLocationGrant.setData("");
+ self.StartGeolocating(false);
+ }
+ }
+
+ private MoveToCurrentLoction(targetZoom?: number) {
+ const location = this._currentGPSLocation.data;
+ this._lastUserRequest = undefined;
+
+ if (
+ this._currentGPSLocation.data.latlng[0] === 0 &&
+ this._currentGPSLocation.data.latlng[1] === 0
+ ) {
+ console.debug("Not moving to GPS-location: it is null island");
+ return;
+ }
+
+ // We check that the GPS location is not out of bounds
+ const b = this._layoutToUse.data.lockLocation;
+ let inRange = true;
+ if (b) {
+ if (b !== true) {
+ // B is an array with our locklocation
+ inRange =
+ b[0][0] <= location.latlng[0] &&
+ location.latlng[0] <= b[1][0] &&
+ b[0][1] <= location.latlng[1] &&
+ location.latlng[1] <= b[1][1];
+ }
+ }
+ if (!inRange) {
+ console.log(
+ "Not zooming to GPS location: out of bounds",
+ b,
+ location.latlng
+ );
+ } else {
+ this._leafletMap.data.setView(location.latlng, targetZoom);
+ }
+ }
+
+ private StartGeolocating(zoomToGPS = true) {
+ const self = this;
+ console.log("Starting geolocation");
+
+ this._lastUserRequest = zoomToGPS ? new Date() : new Date(0);
+ if (self._permission.data === "denied") {
+ self._previousLocationGrant.setData("");
+ return "";
+ }
+ if (this._currentGPSLocation.data !== undefined) {
+ this.MoveToCurrentLoction(16);
+ }
+
+ console.log("Searching location using GPS");
+
+ if (self._isActive.data) {
+ return;
+ }
+ self._isActive.setData(true);
+
+ navigator.geolocation.watchPosition(
+ function (position) {
+ self._currentGPSLocation.setData({
+ latlng: [position.coords.latitude, position.coords.longitude],
+ accuracy: position.coords.accuracy,
+ });
+ },
+ function () {
+ console.warn("Could not get location with navigator.geolocation");
+ },
+ {
+ enableHighAccuracy: true
+ }
+ );
+ }
}
From bca995b985615137f7835155e0bd15edc5686e68 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Mon, 26 Jul 2021 09:50:55 +0200
Subject: [PATCH 56/71] s/maps.me/organic maps/g; fix #443
---
langs/en.json | 2 +-
langs/ja.json | 2 +-
langs/nl.json | 2 +-
langs/ru.json | 2 +-
langs/zh_Hant.json | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/langs/en.json b/langs/en.json
index aac35335c1..bc1098e34d 100644
--- a/langs/en.json
+++ b/langs/en.json
@@ -56,7 +56,7 @@
"loginWithOpenStreetMap": "Login with OpenStreetMap",
"welcomeBack": "You are logged in, welcome back!",
"loginToStart": "Login to answer this question",
- "openStreetMapIntro": "
An Open Map
Wouldn't it be cool if there was a single map, which everyone could freely use and edit? A single place to store all geo-information? Then, all those websites with different, small and incompatible maps (which are always outdated) wouldn't be needed anymore.
OpenStreetMap is this map. The map data can be used for free (with attribution and publication of changes to that data). On top of that, everyone can freely add new data and fix errors. This website uses OpenStreetMap as well. All the data is from there, and your answers and corrections are added there as well.
A ton of people and application already use OpenStreetMap: Maps.me, OsmAnd, but also the maps at Facebook, Instagram, Apple-maps and Bing-maps are (partly) powered by OpenStreetMap. If you change something here, it'll be reflected in those applications too - after their next update!
",
+ "openStreetMapIntro": "
An Open Map
Wouldn't it be cool if there was a single map, which everyone could freely use and edit? A single place to store all geo-information? Then, all those websites with different, small and incompatible maps (which are always outdated) wouldn't be needed anymore.
OpenStreetMap is this map. The map data can be used for free (with attribution and publication of changes to that data). On top of that, everyone can freely add new data and fix errors. This website uses OpenStreetMap as well. All the data is from there, and your answers and corrections are added there as well.
A ton of people and application already use OpenStreetMap: Organic Maps, OsmAnd, but also the maps at Facebook, Instagram, Apple-maps and Bing-maps are (partly) powered by OpenStreetMap. If you change something here, it'll be reflected in those applications too - after their next update!
",
"noNameCategory": "名前のない {category}",
"pickLanguage": "言語を選択します: ",
"number": "number",
diff --git a/langs/nl.json b/langs/nl.json
index 31b6109ff4..9b54b354d0 100644
--- a/langs/nl.json
+++ b/langs/nl.json
@@ -69,7 +69,7 @@
"emailOf": "Wat is het email-adres van {category}?",
"emailIs": "Het email-adres van {category} is {email}"
},
- "openStreetMapIntro": "
Een open kaart
Zou het niet fantastisch zijn als er een open kaart zou zijn die door iedereen aangepast én gebruikt kan worden? Een kaart waar iedereen zijn interesses aan zou kunnen toevoegen? Dan zouden er geen duizend-en-één verschillende kleine kaartjes, websites, ... meer nodig zijn
OpenStreetMap is deze open kaart. Je mag de kaartdata gratis gebruiken (mits bronvermelding en herpublicatie van aanpassingen). Daarenboven mag je de kaart ook gratis aanpassen als je een account maakt. Ook deze website is gebaseerd op OpenStreetMap. Als je hier een vraag beantwoord, gaat het antwoord daar ook naartoe
Tenslotte zijn er reeds vele gebruikers van OpenStreetMap. Denk maar Maps.me, OsmAnd, verschillende gespecialiseerde routeplanners, de achtergrondkaarten op Facebook, Instagram,... Zelfs Apple Maps en Bing-Maps gebruiken OpenStreetMap in hun kaarten!
Kortom, als je hier een punt toevoegd of een vraag beantwoord, zal dat na een tijdje ook in al dié applicaties te zien zijn.
",
+ "openStreetMapIntro": "
Een open kaart
Zou het niet fantastisch zijn als er een open kaart zou zijn die door iedereen aangepast én gebruikt kan worden? Een kaart waar iedereen zijn interesses aan zou kunnen toevoegen? Dan zouden er geen duizend-en-één verschillende kleine kaartjes, websites, ... meer nodig zijn
OpenStreetMap is deze open kaart. Je mag de kaartdata gratis gebruiken (mits bronvermelding en herpublicatie van aanpassingen). Daarenboven mag je de kaart ook gratis aanpassen als je een account maakt. Ook deze website is gebaseerd op OpenStreetMap. Als je hier een vraag beantwoord, gaat het antwoord daar ook naartoe
Tenslotte zijn er reeds vele gebruikers van OpenStreetMap. Denk maar Organic Maps, OsmAnd, verschillende gespecialiseerde routeplanners, de achtergrondkaarten op Facebook, Instagram,... Zelfs Apple Maps en Bing-Maps gebruiken OpenStreetMap in hun kaarten!
Kortom, als je hier een punt toevoegd of een vraag beantwoord, zal dat na een tijdje ook in al dié applicaties te zien zijn.
",
"attributionTitle": "Уведомление об авторстве"
},
- "openStreetMapIntro": "
Свободная карта
Было бы здорово если бы была одна карта, которую каждый может свободно использовать и редактировать? Использовать как общее хранилище для всей гео-информации? Тогда, все сайты с разной, неполной и несовместимой информацией (которая обычно устарела) будут больше не нужны.
OpenStreetMap такая карта. Данные карты могу быть свободно использованы (с аннотацией и публикацией изменений к данным). Более того, каждый может свободно добавлять информацию и исправлять ошибки. Этот сайт также использует OpenStreetMap. Все данные берутся оттуда, а ваши ответы и исправления отправляются обратно туда.
Огромное количество людей уже использует OpenStreetMap: Maps.me, OsmAnd, а также карты в Facebook, Instagram, Apple-карты и Bing-карты (частично) используют OpenStreetMap. Если вы что-то измените здесь, это также будет отражено в этих приложениях - после их следующего обновления!
"
+ "openStreetMapIntro": "
Свободная карта
Было бы здорово если бы была одна карта, которую каждый может свободно использовать и редактировать? Использовать как общее хранилище для всей гео-информации? Тогда, все сайты с разной, неполной и несовместимой информацией (которая обычно устарела) будут больше не нужны.
OpenStreetMap такая карта. Данные карты могу быть свободно использованы (с аннотацией и публикацией изменений к данным). Более того, каждый может свободно добавлять информацию и исправлять ошибки. Этот сайт также использует OpenStreetMap. Все данные берутся оттуда, а ваши ответы и исправления отправляются обратно туда.
Огромное количество людей уже использует OpenStreetMap: Organic Maps, OsmAnd, а также карты в Facebook, Instagram, Apple-карты и Bing-карты (частично) используют OpenStreetMap. Если вы что-то измените здесь, это также будет отражено в этих приложениях - после их следующего обновления!
"
},
"index": {
"pickTheme": "Выберите тему ниже, чтобы начать.",
diff --git a/langs/zh_Hant.json b/langs/zh_Hant.json
index 4aae9b875c..e98a31535f 100644
--- a/langs/zh_Hant.json
+++ b/langs/zh_Hant.json
@@ -101,7 +101,7 @@
"attributionContent": "
",
"questions": {
"emailIs": "{category} 的電子郵件地址是{email}",
"emailOf": "{category} 的電子郵件地址是?",
From 177649614dfed99777988468640e4cd1dc158538 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Mon, 26 Jul 2021 10:13:50 +0200
Subject: [PATCH 57/71] Rename some themes for more consistency, check of
theme-ids, see #431
---
assets/themes/artwork/artwork.json | 4 +--
.../bicyclelib.json} | 0
.../license_info.json | 0
.../{bicycle_library => bicyclelib}/logo.svg | 0
.../{Bookcases.json => bookcases.json} | 0
.../Barßel_Wohnmobilstellplatz.jpg | Bin
.../campersite.json} | 0
.../{campersites => campersite}/caravan.svg | 0
.../caravan_green.svg | 0
.../license_info.json | 0
.../sanitary_dump_station.svg | 0
assets/themes/cyclestreets/cyclestreets.json | 6 ++---
assets/themes/fruit_trees/fruit_trees.json | 4 +--
.../personal.json} | 0
.../cam_left.svg | 0
.../cam_right.svg | 0
.../custom_theme.css | 0
.../dome.svg | 0
.../license_info.json | 0
.../logo.svg | 0
.../surveillance.json} | 0
langs/layers/ru.json | 10 ++------
langs/shared-questions/de.json | 23 +----------------
langs/shared-questions/ru.json | 16 +-----------
langs/themes/de.json | 2 +-
langs/themes/en.json | 4 +--
langs/themes/es.json | 2 +-
langs/themes/fr.json | 2 +-
langs/themes/hu.json | 2 +-
langs/themes/id.json | 2 +-
langs/themes/it.json | 4 +--
langs/themes/ja.json | 4 +--
langs/themes/nb_NO.json | 4 +--
langs/themes/nl.json | 8 +++---
langs/themes/ru.json | 4 +--
langs/themes/sv.json | 2 +-
langs/themes/zh_Hant.json | 4 +--
scripts/generateLayerOverview.ts | 24 ++++++++++++------
38 files changed, 49 insertions(+), 82 deletions(-)
rename assets/themes/{bicycle_library/bicycle_library.json => bicyclelib/bicyclelib.json} (100%)
rename assets/themes/{bicycle_library => bicyclelib}/license_info.json (100%)
rename assets/themes/{bicycle_library => bicyclelib}/logo.svg (100%)
rename assets/themes/bookcases/{Bookcases.json => bookcases.json} (100%)
rename assets/themes/{campersites => campersite}/Barßel_Wohnmobilstellplatz.jpg (100%)
rename assets/themes/{campersites/campersites.json => campersite/campersite.json} (100%)
rename assets/themes/{campersites => campersite}/caravan.svg (100%)
rename assets/themes/{campersites => campersite}/caravan_green.svg (100%)
rename assets/themes/{campersites => campersite}/license_info.json (100%)
rename assets/themes/{campersites => campersite}/sanitary_dump_station.svg (100%)
rename assets/themes/{personalLayout/personalLayout.json => personal/personal.json} (100%)
rename assets/themes/{surveillance_cameras => surveillance}/cam_left.svg (100%)
rename assets/themes/{surveillance_cameras => surveillance}/cam_right.svg (100%)
rename assets/themes/{surveillance_cameras => surveillance}/custom_theme.css (100%)
rename assets/themes/{surveillance_cameras => surveillance}/dome.svg (100%)
rename assets/themes/{surveillance_cameras => surveillance}/license_info.json (100%)
rename assets/themes/{surveillance_cameras => surveillance}/logo.svg (100%)
rename assets/themes/{surveillance_cameras/surveillance_cameras.json => surveillance/surveillance.json} (100%)
diff --git a/assets/themes/artwork/artwork.json b/assets/themes/artwork/artwork.json
index c3b7b7c552..454ff9eac1 100644
--- a/assets/themes/artwork/artwork.json
+++ b/assets/themes/artwork/artwork.json
@@ -1,5 +1,5 @@
{
- "id": "artworks",
+ "id": "artwork",
"version": "2020-08-30",
"title": {
"en": "Open Artwork Map",
@@ -429,4 +429,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/assets/themes/bicycle_library/bicycle_library.json b/assets/themes/bicyclelib/bicyclelib.json
similarity index 100%
rename from assets/themes/bicycle_library/bicycle_library.json
rename to assets/themes/bicyclelib/bicyclelib.json
diff --git a/assets/themes/bicycle_library/license_info.json b/assets/themes/bicyclelib/license_info.json
similarity index 100%
rename from assets/themes/bicycle_library/license_info.json
rename to assets/themes/bicyclelib/license_info.json
diff --git a/assets/themes/bicycle_library/logo.svg b/assets/themes/bicyclelib/logo.svg
similarity index 100%
rename from assets/themes/bicycle_library/logo.svg
rename to assets/themes/bicyclelib/logo.svg
diff --git a/assets/themes/bookcases/Bookcases.json b/assets/themes/bookcases/bookcases.json
similarity index 100%
rename from assets/themes/bookcases/Bookcases.json
rename to assets/themes/bookcases/bookcases.json
diff --git a/assets/themes/campersites/Barßel_Wohnmobilstellplatz.jpg b/assets/themes/campersite/Barßel_Wohnmobilstellplatz.jpg
similarity index 100%
rename from assets/themes/campersites/Barßel_Wohnmobilstellplatz.jpg
rename to assets/themes/campersite/Barßel_Wohnmobilstellplatz.jpg
diff --git a/assets/themes/campersites/campersites.json b/assets/themes/campersite/campersite.json
similarity index 100%
rename from assets/themes/campersites/campersites.json
rename to assets/themes/campersite/campersite.json
diff --git a/assets/themes/campersites/caravan.svg b/assets/themes/campersite/caravan.svg
similarity index 100%
rename from assets/themes/campersites/caravan.svg
rename to assets/themes/campersite/caravan.svg
diff --git a/assets/themes/campersites/caravan_green.svg b/assets/themes/campersite/caravan_green.svg
similarity index 100%
rename from assets/themes/campersites/caravan_green.svg
rename to assets/themes/campersite/caravan_green.svg
diff --git a/assets/themes/campersites/license_info.json b/assets/themes/campersite/license_info.json
similarity index 100%
rename from assets/themes/campersites/license_info.json
rename to assets/themes/campersite/license_info.json
diff --git a/assets/themes/campersites/sanitary_dump_station.svg b/assets/themes/campersite/sanitary_dump_station.svg
similarity index 100%
rename from assets/themes/campersites/sanitary_dump_station.svg
rename to assets/themes/campersite/sanitary_dump_station.svg
diff --git a/assets/themes/cyclestreets/cyclestreets.json b/assets/themes/cyclestreets/cyclestreets.json
index b3b3abbf4c..a09314b9d3 100644
--- a/assets/themes/cyclestreets/cyclestreets.json
+++ b/assets/themes/cyclestreets/cyclestreets.json
@@ -1,5 +1,5 @@
{
- "id": "fietsstraten",
+ "id": "cyclestreets",
"version": "2020-08-30",
"title": {
"nl": "Fietsstraten",
@@ -68,7 +68,7 @@
]
},
"then": {
- "nl": "Deze straat is een fietsstraat",
+ "nl": "Deze straat i een fietsstraat",
"en": "This street is a cyclestreet",
"ja": "この通りはcyclestreetだ",
"nb_NO": "Denne gaten er en sykkelvei"
@@ -279,4 +279,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/assets/themes/fruit_trees/fruit_trees.json b/assets/themes/fruit_trees/fruit_trees.json
index dc59132c91..d16dd377be 100644
--- a/assets/themes/fruit_trees/fruit_trees.json
+++ b/assets/themes/fruit_trees/fruit_trees.json
@@ -1,5 +1,5 @@
{
- "id": "boomgaarden",
+ "id": "fruit_trees",
"title": {
"nl": "Open Boomgaardenkaart"
},
@@ -172,4 +172,4 @@
}
],
"roamingRenderings": []
-}
\ No newline at end of file
+}
diff --git a/assets/themes/personalLayout/personalLayout.json b/assets/themes/personal/personal.json
similarity index 100%
rename from assets/themes/personalLayout/personalLayout.json
rename to assets/themes/personal/personal.json
diff --git a/assets/themes/surveillance_cameras/cam_left.svg b/assets/themes/surveillance/cam_left.svg
similarity index 100%
rename from assets/themes/surveillance_cameras/cam_left.svg
rename to assets/themes/surveillance/cam_left.svg
diff --git a/assets/themes/surveillance_cameras/cam_right.svg b/assets/themes/surveillance/cam_right.svg
similarity index 100%
rename from assets/themes/surveillance_cameras/cam_right.svg
rename to assets/themes/surveillance/cam_right.svg
diff --git a/assets/themes/surveillance_cameras/custom_theme.css b/assets/themes/surveillance/custom_theme.css
similarity index 100%
rename from assets/themes/surveillance_cameras/custom_theme.css
rename to assets/themes/surveillance/custom_theme.css
diff --git a/assets/themes/surveillance_cameras/dome.svg b/assets/themes/surveillance/dome.svg
similarity index 100%
rename from assets/themes/surveillance_cameras/dome.svg
rename to assets/themes/surveillance/dome.svg
diff --git a/assets/themes/surveillance_cameras/license_info.json b/assets/themes/surveillance/license_info.json
similarity index 100%
rename from assets/themes/surveillance_cameras/license_info.json
rename to assets/themes/surveillance/license_info.json
diff --git a/assets/themes/surveillance_cameras/logo.svg b/assets/themes/surveillance/logo.svg
similarity index 100%
rename from assets/themes/surveillance_cameras/logo.svg
rename to assets/themes/surveillance/logo.svg
diff --git a/assets/themes/surveillance_cameras/surveillance_cameras.json b/assets/themes/surveillance/surveillance.json
similarity index 100%
rename from assets/themes/surveillance_cameras/surveillance_cameras.json
rename to assets/themes/surveillance/surveillance.json
diff --git a/langs/layers/ru.json b/langs/layers/ru.json
index c0f5353343..0cd328a6ae 100644
--- a/langs/layers/ru.json
+++ b/langs/layers/ru.json
@@ -487,11 +487,6 @@
}
}
}
- },
- "presets": {
- "0": {
- "title": "Обслуживание велосипедов/магазин"
- }
}
},
"defibrillator": {
@@ -1069,7 +1064,6 @@
"1": {
"question": "Вы хотите добавить описание?"
}
- },
- "name": "Смотровая площадка"
+ }
}
-}
+}
\ No newline at end of file
diff --git a/langs/shared-questions/de.json b/langs/shared-questions/de.json
index 6faff774e2..ff0b97af86 100644
--- a/langs/shared-questions/de.json
+++ b/langs/shared-questions/de.json
@@ -6,27 +6,6 @@
"opening_hours": {
"question": "Was sind die Öffnungszeiten von {name}?",
"render": "
Öffnungszeiten
{opening_hours_table(opening_hours)}"
- },
- "level": {
- "mappings": {
- "2": {
- "then": "Ist im ersten Stock"
- },
- "1": {
- "then": "Ist im Erdgeschoss"
- }
- },
- "render": "Befindet sich im {level}ten Stock",
- "question": "In welchem Stockwerk befindet sich dieses Objekt?"
- },
- "description": {
- "question": "Gibt es noch etwas, das die vorhergehenden Fragen nicht abgedeckt haben? Hier wäre Platz dafür. Bitte keine bereits erhobenen Informationen."
- },
- "website": {
- "question": "Was ist die Website von {name}?"
- },
- "email": {
- "question": "Was ist die Mail-Adresse von {name}?"
}
}
-}
+}
\ No newline at end of file
diff --git a/langs/shared-questions/ru.json b/langs/shared-questions/ru.json
index 93c56dc441..a06bc76078 100644
--- a/langs/shared-questions/ru.json
+++ b/langs/shared-questions/ru.json
@@ -15,20 +15,6 @@
"opening_hours": {
"question": "Какое время работы у {name}?",
"render": "
Часы работы
{opening_hours_table(opening_hours)}"
- },
- "level": {
- "mappings": {
- "2": {
- "then": "Расположено на первом этаже"
- },
- "1": {
- "then": "Расположено на первом этаже"
- },
- "0": {
- "then": "Расположено под землей"
- }
- },
- "render": "Расположено на {level}ом этаже"
}
}
-}
+}
\ No newline at end of file
diff --git a/langs/themes/de.json b/langs/themes/de.json
index 6a0b29fad1..48972b7683 100644
--- a/langs/themes/de.json
+++ b/langs/themes/de.json
@@ -3,7 +3,7 @@
"title": "AED-Karte öffnen",
"description": "Auf dieser Karte kann man nahe gelegene Defibrillatoren finden und markieren"
},
- "artworks": {
+ "artwork": {
"title": "Freie Kunstwerk-Karte",
"description": "Willkommen bei der Freien Kunstwerk-Karte, einer Karte von Statuen, Büsten, Grafitti, ... auf der ganzen Welt",
"layers": {
diff --git a/langs/themes/en.json b/langs/themes/en.json
index f5db488b97..dd70beaf6a 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -3,7 +3,7 @@
"title": "Open AED Map",
"description": "On this map, one can find and mark nearby defibrillators"
},
- "artworks": {
+ "artwork": {
"title": "Open Artwork Map",
"description": "Welcome to Open Artwork Map, a map of statues, busts, grafittis and other artwork all over the world",
"layers": {
@@ -692,7 +692,7 @@
}
}
},
- "fietsstraten": {
+ "cyclestreets": {
"title": "Cyclestreets",
"shortDescription": "A map of cyclestreets",
"description": "A cyclestreet is is a street where motorized traffic is not allowed to overtake cyclists. They are signposted by a special traffic sign. Cyclestreets can be found in the Netherlands and Belgium, but also in Germany and France. ",
diff --git a/langs/themes/es.json b/langs/themes/es.json
index 03668a5d5c..91a123d7f0 100644
--- a/langs/themes/es.json
+++ b/langs/themes/es.json
@@ -3,7 +3,7 @@
"title": "Mapa abierto de desfibriladores (DEA)",
"description": "En este mapa , cualquiera puede encontrar y marcar los desfibriladores externos automáticos más cercanos"
},
- "artworks": {
+ "artwork": {
"description": "Bienvenido a Open Artwork Map, un mapa de estatuas, bustos, grafitis y otras obras de arte de todo el mundo",
"layers": {
"0": {
diff --git a/langs/themes/fr.json b/langs/themes/fr.json
index 25bff80566..9d927b6183 100644
--- a/langs/themes/fr.json
+++ b/langs/themes/fr.json
@@ -3,7 +3,7 @@
"title": "Carte des défibrillateurs (DAE)",
"description": "Sur cette carte, vous pouvez trouver et améliorer les informations sur les défibrillateurs"
},
- "artworks": {
+ "artwork": {
"title": "Carte ouverte des œuvres d'art",
"description": "Bienvenue sur la carte ouverte des œuvres d'art, une carte des statues, fresques, ... du monde entier",
"layers": {
diff --git a/langs/themes/hu.json b/langs/themes/hu.json
index 10a97477f6..cb8f0fd7ff 100644
--- a/langs/themes/hu.json
+++ b/langs/themes/hu.json
@@ -2,7 +2,7 @@
"aed": {
"title": "Nyílt AED Térkép"
},
- "artworks": {
+ "artwork": {
"title": "Nyít Műalkotás Térkép"
}
}
\ No newline at end of file
diff --git a/langs/themes/id.json b/langs/themes/id.json
index 31649d682e..c436e745eb 100644
--- a/langs/themes/id.json
+++ b/langs/themes/id.json
@@ -3,7 +3,7 @@
"title": "Buka Peta AED",
"description": "Di peta ini, seseorang dapat menemukan dan menandai defibrillator terdekat"
},
- "artworks": {
+ "artwork": {
"title": "Buka Peta Karya Seni",
"description": "Selamat datang di Open Artwork Map, peta untuk patung, grafiti, dan karya seni lain di seluruh dunia",
"layers": {
diff --git a/langs/themes/it.json b/langs/themes/it.json
index 89189d3aec..313e2715f9 100644
--- a/langs/themes/it.json
+++ b/langs/themes/it.json
@@ -3,7 +3,7 @@
"title": "Mappa dei defibrillatori (DAE)",
"description": "Su questa mappa puoi trovare e segnalare i defibrillatori nelle vicinanze"
},
- "artworks": {
+ "artwork": {
"title": "Mappa libera delle opere d'arte",
"description": "Benvenuto/a sulla mappa libera dell’arte, una mappa delle statue, i busti, i graffiti e le altre realizzazioni artistiche di tutto il mondo",
"layers": {
@@ -396,7 +396,7 @@
}
}
},
- "fietsstraten": {
+ "cyclestreets": {
"roamingRenderings": {
"0": {
"mappings": {
diff --git a/langs/themes/ja.json b/langs/themes/ja.json
index 2754b88120..3dfd0a2e4a 100644
--- a/langs/themes/ja.json
+++ b/langs/themes/ja.json
@@ -3,7 +3,7 @@
"title": "オープンAEDマップ",
"description": "この地図では近くにある除細動器(AED)を見つけてマークします"
},
- "artworks": {
+ "artwork": {
"title": "オープン アートワーク マップ",
"description": "オープン アートワーク マップへようこそ。世界中の銅像や胸像、壁の落書きなどのアートワークの地図です",
"layers": {
@@ -583,7 +583,7 @@
}
}
},
- "fietsstraten": {
+ "cyclestreets": {
"title": "Cyclestreets",
"shortDescription": "cyclestreetsの地図",
"description": "cyclestreetとは、自動車がサイクリストを追い越すことができない道です。専用の道路標識で表示されます。Cyclestreetsはオランダやベルギーにもありますが、ドイツやフランスにもあります。 ",
diff --git a/langs/themes/nb_NO.json b/langs/themes/nb_NO.json
index 9792f7c736..29f14be05b 100644
--- a/langs/themes/nb_NO.json
+++ b/langs/themes/nb_NO.json
@@ -2,7 +2,7 @@
"aed": {
"title": "Åpne AED-kart"
},
- "artworks": {
+ "artwork": {
"layers": {
"0": {
"name": "Kunstverk",
@@ -213,7 +213,7 @@
}
}
},
- "fietsstraten": {
+ "cyclestreets": {
"shortDescription": "Et kart over sykkelveier",
"roamingRenderings": {
"0": {
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index e1ab2203fd..550fc1bcd8 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -7,7 +7,7 @@
"title": "Open AED-kaart - Brugge edition",
"description": "Op deze kaart kan je informatie over AEDs vinden en verbeteren + een export van de brugse defibrillatoren"
},
- "artworks": {
+ "artwork": {
"title": "Kunstwerkenkaart",
"description": "Welkom op de Open Kunstwerken Kaart",
"layers": {
@@ -580,7 +580,7 @@
}
}
},
- "fietsstraten": {
+ "cyclestreets": {
"title": "Fietsstraten",
"shortDescription": "Een kaart met alle gekende fietsstraten",
"description": "Een fietsstraat is een straat waar
Fietsers nog steeds voorrang aan rechts moeten verlenen - ook aan auto's en voetgangers op het zebrapad
Op deze open kaart kan je alle gekende fietsstraten zien en kan je ontbrekende fietsstraten aanduiden. Om de kaart aan te passen, moet je je aanmelden met OpenStreetMap en helemaal inzoomen tot straatniveau.",
@@ -592,7 +592,7 @@
"then": "Deze straat is een fietsstraat (en dus zone 30)"
},
"1": {
- "then": "Deze straat is een fietsstraat"
+ "then": "Deze straat i een fietsstraat"
},
"2": {
"then": "Deze straat wordt binnenkort een fietsstraat"
@@ -820,7 +820,7 @@
}
}
},
- "boomgaarden": {
+ "fruit_trees": {
"title": "Open Boomgaardenkaart",
"shortDescription": "Boomgaarden en fruitbomen",
"description": "Op deze kaart vindt je boomgaarden en fruitbomen",
diff --git a/langs/themes/ru.json b/langs/themes/ru.json
index 74f15b8753..ccc9571e3f 100644
--- a/langs/themes/ru.json
+++ b/langs/themes/ru.json
@@ -3,7 +3,7 @@
"title": "Открытая карта АВД (Автоматизированных внешних дефибрилляторов)",
"description": "На этой карте вы можете найти и отметить ближайшие дефибрилляторы"
},
- "artworks": {
+ "artwork": {
"title": "Открытая карта произведений искусства",
"description": "Добро пожаловать на Open Artwork Map, карту статуй, бюстов, граффити и других произведений искусства по всему миру",
"layers": {
@@ -407,7 +407,7 @@
}
}
},
- "fietsstraten": {
+ "cyclestreets": {
"layers": {
"2": {
"name": "Все улицы",
diff --git a/langs/themes/sv.json b/langs/themes/sv.json
index 2a881c73c7..59d44792db 100644
--- a/langs/themes/sv.json
+++ b/langs/themes/sv.json
@@ -3,7 +3,7 @@
"title": "Öppna AED-karta",
"description": "På denna karta kan man hitta och markera närliggande defibrillatorer"
},
- "artworks": {
+ "artwork": {
"title": "Öppen konstverkskarta"
}
}
\ No newline at end of file
diff --git a/langs/themes/zh_Hant.json b/langs/themes/zh_Hant.json
index 73063a9d78..cd855a4a4f 100644
--- a/langs/themes/zh_Hant.json
+++ b/langs/themes/zh_Hant.json
@@ -3,7 +3,7 @@
"title": "開放AED地圖",
"description": "在這份地圖上,你可以找到與標記附近的除顫器"
},
- "artworks": {
+ "artwork": {
"title": "開放藝術品地圖",
"description": "歡迎來到開放藝術品地圖,這份地圖會顯示全世界的雕像、半身像、塗鴉以及其他類型的藝術品",
"layers": {
@@ -294,7 +294,7 @@
}
}
},
- "fietsstraten": {
+ "cyclestreets": {
"title": "單車街道",
"shortDescription": "單車街道的地圖",
"description": "單車街道是機動車輛受限制,只允許單車通行的道路。通常會有路標顯示特別的交通指標。單車街道通常在荷蘭、比利時看到,但德國與法國也有。 ",
diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts
index d903867c84..3ea75e290f 100644
--- a/scripts/generateLayerOverview.ts
+++ b/scripts/generateLayerOverview.ts
@@ -78,9 +78,8 @@ class LayerOverviewUtils {
main(args: string[]) {
- const lt = this.loadThemesAndLayers();
- const layerFiles = lt.layers;
- const themeFiles = lt.themes;
+ const layerFiles = ScriptUtils.getLayerFiles();
+ const themeFiles = ScriptUtils.getThemeFiles();
console.log(" ---------- VALIDATING ---------")
const licensePaths = []
@@ -98,7 +97,9 @@ class LayerOverviewUtils {
}
let themeErrorCount = []
- for (const themeFile of themeFiles) {
+ for (const themeInfo of themeFiles) {
+ const themeFile = themeInfo.parsed
+ const themePath = themeInfo.path
if (typeof themeFile.language === "string") {
themeErrorCount.push("The theme " + themeFile.id + " has a string as language. Please use a list of strings")
}
@@ -108,12 +109,13 @@ class LayerOverviewUtils {
themeErrorCount.push(`Unknown layer id: ${layer} in theme ${themeFile.id}`)
}
} else {
- if (layer.builtin !== undefined) {
- if (!knownLayerIds.has(layer.builtin)) {
- themeErrorCount.push("Unknown layer id: " + layer.builtin + "(which uses inheritance)")
+ if (layer["builtin"] !== undefined) {
+ if (!knownLayerIds.has(layer["builtin"])) {
+ themeErrorCount.push("Unknown layer id: " + layer["builtin"] + "(which uses inheritance)")
}
} else {
// layer.builtin contains layer overrides - we can skip those
+ // @ts-ignore
layerErrorCount.push(...this.validateLayer(layer, undefined, knownPaths, themeFile.id))
}
}
@@ -121,7 +123,7 @@ class LayerOverviewUtils {
themeFile.layers = themeFile.layers
.filter(l => typeof l != "string") // We remove all the builtin layer references as they don't work with ts-node for some weird reason
- .filter(l => l.builtin === undefined)
+ .filter(l => l["builtin"] === undefined)
try {
@@ -129,6 +131,12 @@ class LayerOverviewUtils {
if (theme.id !== theme.id.toLowerCase()) {
themeErrorCount.push("Theme ids should be in lowercase, but it is " + theme.id)
}
+ let filename = themePath.substring(themePath.lastIndexOf("/") + 1, themePath.length - 5)
+ if(theme.id !== filename){
+ themeErrorCount.push("Theme ids should be the same as the name.json, but we got id: " + theme.id + " and filename "+filename+" ("+themePath+")")
+ }
+
+
} catch (e) {
themeErrorCount.push("Could not parse theme " + themeFile["id"] + "due to", e)
}
From 00e2f56d3e85b84bc3fe8e510b82b78ff5f613e7 Mon Sep 17 00:00:00 2001
From: pietervdvn
Date: Mon, 26 Jul 2021 10:37:11 +0200
Subject: [PATCH 58/71] Remove all old 'hideUnderlayingFeaturePercentages' as
they aren't used anymore; check in script; fix #431
---
assets/layers/bench/bench.json | 1 -
assets/layers/bench_at_pt/bench_at_pt.json | 1 -
assets/layers/bicycle_library/bicycle_library.json | 1 -
assets/layers/bike_cafe/bike_cafe.json | 1 -
.../bike_monitoring_station/bike_monitoring_station.json | 1 -
assets/layers/bike_shop/bike_shop.json | 1 -
assets/layers/bike_themed_object/bike_themed_object.json | 1 -
assets/layers/information_board/information_board.json | 1 -
assets/layers/map/map.json | 1 -
assets/layers/nature_reserve/nature_reserve.json | 1 -
assets/layers/picnic_table/picnic_table.json | 1 -
assets/layers/play_forest/play_forest.json | 1 -
assets/layers/playground/playground.json | 1 -
assets/layers/slow_roads/slow_roads.json | 1 -
assets/layers/sport_pitch/sport_pitch.json | 1 -
assets/layers/surveillance_camera/surveillance_camera.json | 1 -
assets/layers/tree_node/tree_node.json | 1 -
assets/themes/campersite/campersite.json | 2 --
assets/themes/charging_stations/charging_stations.json | 1 -
assets/themes/climbing/climbing.json | 5 -----
assets/themes/facadegardens/facadegardens.json | 1 -
assets/themes/fruit_trees/fruit_trees.json | 2 --
assets/themes/grb.json | 1 -
assets/themes/hailhydrant/hailhydrant.json | 4 ----
assets/themes/shops/shops.json | 1 -
assets/themes/widths/width.json | 1 -
scripts/generateLayerOverview.ts | 4 ++++
27 files changed, 4 insertions(+), 35 deletions(-)
diff --git a/assets/layers/bench/bench.json b/assets/layers/bench/bench.json
index 312b21cfcc..1eacb6f63b 100644
--- a/assets/layers/bench/bench.json
+++ b/assets/layers/bench/bench.json
@@ -517,7 +517,6 @@
]
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/benches/bench_poi.svg",
"mappings": []
diff --git a/assets/layers/bench_at_pt/bench_at_pt.json b/assets/layers/bench_at_pt/bench_at_pt.json
index bb2661e25f..fc80219b38 100644
--- a/assets/layers/bench_at_pt/bench_at_pt.json
+++ b/assets/layers/bench_at_pt/bench_at_pt.json
@@ -126,7 +126,6 @@
}
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/benches/bench_public_transport.svg"
},
diff --git a/assets/layers/bicycle_library/bicycle_library.json b/assets/layers/bicycle_library/bicycle_library.json
index d56f3bc428..dd9ec5741c 100644
--- a/assets/layers/bicycle_library/bicycle_library.json
+++ b/assets/layers/bicycle_library/bicycle_library.json
@@ -210,7 +210,6 @@
},
"description"
],
- "hideUnderlayingFeaturesMinPercentage": 1,
"presets": [
{
"title": {
diff --git a/assets/layers/bike_cafe/bike_cafe.json b/assets/layers/bike_cafe/bike_cafe.json
index 30dcb1760a..9bf3d61a82 100644
--- a/assets/layers/bike_cafe/bike_cafe.json
+++ b/assets/layers/bike_cafe/bike_cafe.json
@@ -293,7 +293,6 @@
}
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/layers/bike_cafe/bike_cafe.svg"
},
diff --git a/assets/layers/bike_monitoring_station/bike_monitoring_station.json b/assets/layers/bike_monitoring_station/bike_monitoring_station.json
index 34b4d1b630..86209610e3 100644
--- a/assets/layers/bike_monitoring_station/bike_monitoring_station.json
+++ b/assets/layers/bike_monitoring_station/bike_monitoring_station.json
@@ -63,7 +63,6 @@
}
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/layers/bike_monitoring_station/monitoring_station.svg"
},
diff --git a/assets/layers/bike_shop/bike_shop.json b/assets/layers/bike_shop/bike_shop.json
index 7f60ced897..c974ab3395 100644
--- a/assets/layers/bike_shop/bike_shop.json
+++ b/assets/layers/bike_shop/bike_shop.json
@@ -601,7 +601,6 @@
]
}
],
- "hideUnderlayingFeaturesMinPercentage": 1,
"presets": [
{
"title": {
diff --git a/assets/layers/bike_themed_object/bike_themed_object.json b/assets/layers/bike_themed_object/bike_themed_object.json
index e3960b9d69..bae9e790ec 100644
--- a/assets/layers/bike_themed_object/bike_themed_object.json
+++ b/assets/layers/bike_themed_object/bike_themed_object.json
@@ -56,7 +56,6 @@
"phone",
"opening_hours"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/layers/bike_themed_object/other_services.svg"
},
diff --git a/assets/layers/information_board/information_board.json b/assets/layers/information_board/information_board.json
index 017f3aeb63..48f0ab6a4a 100644
--- a/assets/layers/information_board/information_board.json
+++ b/assets/layers/information_board/information_board.json
@@ -29,7 +29,6 @@
"tagRenderings": [
"images"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/layers/information_board/board.svg"
},
diff --git a/assets/layers/map/map.json b/assets/layers/map/map.json
index 2c3cf3ea74..453a7f0b7f 100644
--- a/assets/layers/map/map.json
+++ b/assets/layers/map/map.json
@@ -159,7 +159,6 @@
}
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/layers/map/map.svg",
"mappings": [
diff --git a/assets/layers/nature_reserve/nature_reserve.json b/assets/layers/nature_reserve/nature_reserve.json
index a0fd58df80..15d6e57f10 100644
--- a/assets/layers/nature_reserve/nature_reserve.json
+++ b/assets/layers/nature_reserve/nature_reserve.json
@@ -383,7 +383,6 @@
]
}
],
- "hideUnderlayingFeaturesMinPercentage": 10,
"wayHandling": 2,
"icon": {
"render": "./assets/themes/buurtnatuur/nature_reserve.svg"
diff --git a/assets/layers/picnic_table/picnic_table.json b/assets/layers/picnic_table/picnic_table.json
index 672e41f07f..a22c76353c 100644
--- a/assets/layers/picnic_table/picnic_table.json
+++ b/assets/layers/picnic_table/picnic_table.json
@@ -72,7 +72,6 @@
]
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "circle:#e6cf39;./assets/layers/picnic_table/picnic_table.svg"
},
diff --git a/assets/layers/play_forest/play_forest.json b/assets/layers/play_forest/play_forest.json
index eed73151f8..5bbc4b5125 100644
--- a/assets/layers/play_forest/play_forest.json
+++ b/assets/layers/play_forest/play_forest.json
@@ -87,7 +87,6 @@
"render": "{reviews(name, play_forest)}"
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"hideFromOverview": false,
"icon": {
"render": "./assets/layers/play_forest/icon.svg"
diff --git a/assets/layers/playground/playground.json b/assets/layers/playground/playground.json
index ec97eca2bf..f8f4c0027a 100644
--- a/assets/layers/playground/playground.json
+++ b/assets/layers/playground/playground.json
@@ -437,7 +437,6 @@
"render": "{reviews(name, playground)}"
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/playgrounds/playground.svg"
},
diff --git a/assets/layers/slow_roads/slow_roads.json b/assets/layers/slow_roads/slow_roads.json
index 7ee9e2ba9c..9c7d6e237d 100644
--- a/assets/layers/slow_roads/slow_roads.json
+++ b/assets/layers/slow_roads/slow_roads.json
@@ -215,7 +215,6 @@
]
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"width": {
"render": "7"
},
diff --git a/assets/layers/sport_pitch/sport_pitch.json b/assets/layers/sport_pitch/sport_pitch.json
index 140e222b2a..b871523f70 100644
--- a/assets/layers/sport_pitch/sport_pitch.json
+++ b/assets/layers/sport_pitch/sport_pitch.json
@@ -383,7 +383,6 @@
"render": "{reviews(name, sportpitch)}"
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "circle:white;./assets/layers/sport_pitch/sport_pitch.svg",
"mappings": [
diff --git a/assets/layers/surveillance_camera/surveillance_camera.json b/assets/layers/surveillance_camera/surveillance_camera.json
index 20f1e77bf0..77fed82afb 100644
--- a/assets/layers/surveillance_camera/surveillance_camera.json
+++ b/assets/layers/surveillance_camera/surveillance_camera.json
@@ -421,7 +421,6 @@
]
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/surveillance_cameras/logo.svg",
"mappings": [
diff --git a/assets/layers/tree_node/tree_node.json b/assets/layers/tree_node/tree_node.json
index 1f3cc7fdeb..432e3c634c 100644
--- a/assets/layers/tree_node/tree_node.json
+++ b/assets/layers/tree_node/tree_node.json
@@ -449,7 +449,6 @@
}
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "circle:#ffffff;./assets/themes/trees/unknown.svg",
"mappings": [
diff --git a/assets/themes/campersite/campersite.json b/assets/themes/campersite/campersite.json
index cc248f2780..63192c55bf 100644
--- a/assets/themes/campersite/campersite.json
+++ b/assets/themes/campersite/campersite.json
@@ -521,7 +521,6 @@
"questions",
"reviews"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "circle:white;./assets/themes/campersites/caravan.svg",
"mappings": [
@@ -862,7 +861,6 @@
}
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "circle:white;./assets/themes/campersites/sanitary_dump_station.svg"
},
diff --git a/assets/themes/charging_stations/charging_stations.json b/assets/themes/charging_stations/charging_stations.json
index 16bc127864..3fe101f089 100644
--- a/assets/themes/charging_stations/charging_stations.json
+++ b/assets/themes/charging_stations/charging_stations.json
@@ -307,7 +307,6 @@
]
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "pin:#fff;./assets/themes/charging_stations/plug.svg",
"mappings": [
diff --git a/assets/themes/climbing/climbing.json b/assets/themes/climbing/climbing.json
index fbf13310c3..7b4cc30bc9 100644
--- a/assets/themes/climbing/climbing.json
+++ b/assets/themes/climbing/climbing.json
@@ -140,7 +140,6 @@
"phone",
"opening_hours"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/climbing/club.svg"
},
@@ -280,7 +279,6 @@
"opening_hours",
"reviews"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/climbing/climbing_gym.svg"
},
@@ -471,7 +469,6 @@
},
"reviews"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "circle:white;./assets/themes/climbing/climbing_route.svg"
},
@@ -695,7 +692,6 @@
},
"reviews"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/climbing/climbing_no_rope.svg"
},
@@ -850,7 +846,6 @@
}
],
"icon": "./assets/themes/climbing/climbing_unknown.svg",
- "hideUnderlayingFeaturesMinPercentage": 0,
"width": {
"render": "2"
},
diff --git a/assets/themes/facadegardens/facadegardens.json b/assets/themes/facadegardens/facadegardens.json
index 8cc9369815..c69fb08e29 100644
--- a/assets/themes/facadegardens/facadegardens.json
+++ b/assets/themes/facadegardens/facadegardens.json
@@ -330,7 +330,6 @@
}
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "circle:white;./assets/themes/facadegardens/geveltuin.svg",
"mappings": [
diff --git a/assets/themes/fruit_trees/fruit_trees.json b/assets/themes/fruit_trees/fruit_trees.json
index d16dd377be..bf12bbeca2 100644
--- a/assets/themes/fruit_trees/fruit_trees.json
+++ b/assets/themes/fruit_trees/fruit_trees.json
@@ -43,7 +43,6 @@
"tagRenderings": [
"images"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/buurtnatuur/forest.svg"
},
@@ -143,7 +142,6 @@
}
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/fruit_trees/fruit_tree.svg"
},
diff --git a/assets/themes/grb.json b/assets/themes/grb.json
index 7f38732af7..536b694e75 100644
--- a/assets/themes/grb.json
+++ b/assets/themes/grb.json
@@ -173,7 +173,6 @@
}
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"label": {
"mappings": [
{
diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json
index d465b72eb2..fc74cd62c9 100644
--- a/assets/themes/hailhydrant/hailhydrant.json
+++ b/assets/themes/hailhydrant/hailhydrant.json
@@ -258,7 +258,6 @@
},
"images"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/hailhydrant/hydrant.svg"
},
@@ -365,7 +364,6 @@
},
"images"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/hailhydrant/Twemoji12_1f9ef.svg"
},
@@ -568,7 +566,6 @@
},
"images"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/hailhydrant/Twemoji12_1f692.svg"
},
@@ -744,7 +741,6 @@
},
"images"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/hailhydrant/Twemoji_1f691.svg"
},
diff --git a/assets/themes/shops/shops.json b/assets/themes/shops/shops.json
index 571d0e1b6d..5acddf6b79 100644
--- a/assets/themes/shops/shops.json
+++ b/assets/themes/shops/shops.json
@@ -305,7 +305,6 @@
"questions",
"reviews"
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/shops/shop.svg"
},
diff --git a/assets/themes/widths/width.json b/assets/themes/widths/width.json
index 298b9a1281..bf8f9b7665 100644
--- a/assets/themes/widths/width.json
+++ b/assets/themes/widths/width.json
@@ -144,7 +144,6 @@
"render": "{_width:needed}m nodig in het totaal"
}
],
- "hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/widths/icon.svg"
},
diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts
index 3ea75e290f..f35f7c6433 100644
--- a/scripts/generateLayerOverview.ts
+++ b/scripts/generateLayerOverview.ts
@@ -56,6 +56,10 @@ class LayerOverviewUtils {
if (path != undefined && path.indexOf(expected) < 0) {
errorCount.push("Layer is in an incorrect place. The path is " + path + ", but expected " + expected)
}
+ if(layerJson["hideUnderlayingFeaturesMinPercentage"] !== undefined){
+ errorCount.push("Layer "+layer.id+" contains an old 'hideUnderlayingFeaturesMinPercentage'")
+ }
+
for (const image of images) {
if (image.indexOf("{") >= 0) {
From 77c05daca889c8375a9ff6bd5d1445d1d25d94cd Mon Sep 17 00:00:00 2001
From: pgm-chardelv1
Date: Mon, 26 Jul 2021 14:04:23 +0200
Subject: [PATCH 59/71] Added attribution for cycle-infra.svg
---
Svg.ts | 7 +--
assets/layers/bike_shop/bike_shop.json | 3 +-
assets/layers/viewpoint/viewpoint.json | 3 +-
assets/tagRenderings/questions.json | 39 +++++++++++-----
.../cycle_infra}/cycle-infra.svg | 0
assets/themes/cycle_infra/cycle_infra.json | 8 ++--
assets/themes/cycle_infra/license_info.json | 11 +++++
assets/themes/widths/width.json | 5 ++-
langs/layers/ru.json | 6 +--
langs/shared-questions/de.json | 32 +++++++-------
langs/shared-questions/pt_BR.json | 44 +++++++++----------
langs/shared-questions/ru.json | 14 +++---
12 files changed, 101 insertions(+), 71 deletions(-)
rename assets/{svg => themes/cycle_infra}/cycle-infra.svg (100%)
diff --git a/Svg.ts b/Svg.ts
index acff7d662a..b5cc094ba5 100644
--- a/Svg.ts
+++ b/Svg.ts
@@ -109,11 +109,6 @@ export default class Svg {
public static crosshair_svg() { return new Img(Svg.crosshair, true);}
public static crosshair_ui() { return new FixedUiElement(Svg.crosshair_img);}
- public static cycle_infra = ""
- public static cycle_infra_img = Img.AsImageElement(Svg.cycle_infra)
- public static cycle_infra_svg() { return new Img(Svg.cycle_infra, true);}
- public static cycle_infra_ui() { return new FixedUiElement(Svg.cycle_infra_img);}
-
public static delete_icon = " "
public static delete_icon_img = Img.AsImageElement(Svg.delete_icon)
public static delete_icon_svg() { return new Img(Svg.delete_icon, true);}
@@ -359,4 +354,4 @@ export default class Svg {
public static wikipedia_svg() { return new Img(Svg.wikipedia, true);}
public static wikipedia_ui() { return new FixedUiElement(Svg.wikipedia_img);}
-public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"barrier.svg": Svg.barrier,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair-empty.svg": Svg.crosshair_empty,"crosshair-locked.svg": Svg.crosshair_locked,"crosshair.svg": Svg.crosshair,"cycle-infra.svg": Svg.cycle_infra,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"length-crosshair.svg": Svg.length_crosshair,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
+public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"barrier.svg": Svg.barrier,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair-empty.svg": Svg.crosshair_empty,"crosshair-locked.svg": Svg.crosshair_locked,"crosshair.svg": Svg.crosshair,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"length-crosshair.svg": Svg.length_crosshair,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
diff --git a/assets/layers/bike_shop/bike_shop.json b/assets/layers/bike_shop/bike_shop.json
index 7f60ced897..11a98dc73e 100644
--- a/assets/layers/bike_shop/bike_shop.json
+++ b/assets/layers/bike_shop/bike_shop.json
@@ -610,7 +610,8 @@
"fr": "Magasin et réparateur de vélo",
"gl": "Tenda/arranxo de bicicletas",
"de": "Fahrradwerkstatt/geschäft",
- "it": "Negozio/riparatore di bici"
+ "it": "Negozio/riparatore di bici",
+ "ru": "Обслуживание велосипедов/магазин"
},
"tags": [
"shop=bicycle"
diff --git a/assets/layers/viewpoint/viewpoint.json b/assets/layers/viewpoint/viewpoint.json
index c47aa23468..5c77ff8fd4 100644
--- a/assets/layers/viewpoint/viewpoint.json
+++ b/assets/layers/viewpoint/viewpoint.json
@@ -5,7 +5,8 @@
"nl": "Uitzicht",
"de": "Aussichtspunkt",
"fr": "Point de vue",
- "it": "Punto panoramico"
+ "it": "Punto panoramico",
+ "ru": "Смотровая площадка"
},
"description": {
"en": "A nice viewpoint or nice view. Ideal to add an image if no other category fits",
diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json
index 66d034cdc3..85cb3ebb28 100644
--- a/assets/tagRenderings/questions.json
+++ b/assets/tagRenderings/questions.json
@@ -18,7 +18,8 @@
"ru": "Какой номер телефона у {name}?",
"sv": "Vad är telefonnumret till {name}?",
"zh_Hant": "{name} 的電話號碼是什麼?",
- "it": "Qual è il numero di telefono di {name}?"
+ "it": "Qual è il numero di telefono di {name}?",
+ "pt_BR": "Qual o número de telefone de {name}?"
},
"render": "{phone}",
"freeform": {
@@ -49,7 +50,9 @@
"ru": "Какой адрес электронной почты у {name}?",
"id": "Apa alamat surel dari {name}?",
"zh_Hant": "{name} 的電子郵件地址是什麼?",
- "it": "Qual è l'indirizzo email di {name}?"
+ "it": "Qual è l'indirizzo email di {name}?",
+ "de": "Was ist die Mail-Adresse von {name}?",
+ "pt_BR": "Qual o endereço de e-mail de {name}?"
},
"freeform": {
"key": "email",
@@ -66,7 +69,9 @@
"ru": "Какой сайт у {name}?",
"id": "Apa situs web dari {name}?",
"zh_Hant": "{name} 網址是什麼?",
- "it": "Qual è il sito web di {name}?"
+ "it": "Qual è il sito web di {name}?",
+ "de": "Was ist die Website von {name}?",
+ "pt_BR": "Qual o site de {name}?"
},
"render": "{website}",
"freeform": {
@@ -82,7 +87,8 @@
"nb_NO": "Er det noe mer som er relevant du ikke kunne opplyse om i tidligere svar? Legg det til her. Ikke gjenta fakta som allerede er nevnt",
"ru": "Есть ли еще что-то важное, о чем вы не смогли рассказать в предыдущих вопросах? Добавьте это здесь. Не повторяйте уже изложенные факты",
"zh_Hant": "有什麼相關的資訊你無法在先前的問題回應的嗎?請加在這邊吧。 不要重覆答覆已經知道的事情",
- "it": "C'è ancora qualche informazione importante che non è stato possibile fornire nelle domande precedenti? Aggiungila qui. Non ripetere informazioni già fornite"
+ "it": "C'è ancora qualche informazione importante che non è stato possibile fornire nelle domande precedenti? Aggiungila qui. Non ripetere informazioni già fornite",
+ "de": "Gibt es noch etwas, das die vorhergehenden Fragen nicht abgedeckt haben? Hier wäre Platz dafür. Bitte keine bereits erhobenen Informationen."
},
"render": "{description}",
"freeform": {
@@ -98,7 +104,8 @@
"nb_NO": "Hva er åpningstidene for {name})",
"ru": "Какое время работы у {name}?",
"zh_Hant": "{name} 的開放時間是什麼?",
- "it": "Quali sono gli orari di apertura di {name}?"
+ "it": "Quali sono gli orari di apertura di {name}?",
+ "pt_BR": "Qual o horário de funcionamento de {name}?"
},
"render": {
"de": "
Öffnungszeiten
{opening_hours_table(opening_hours)}",
@@ -127,11 +134,15 @@
"level": {
"question": {
"nl": "Op welke verdieping bevindt dit punt zich?",
- "en": "On what level is this feature located?"
+ "en": "On what level is this feature located?",
+ "de": "In welchem Stockwerk befindet sich dieses Objekt?"
},
"render": {
"en": "Located on the {level}th floor",
- "nl": "Bevindt zich op de {level}de verdieping"
+ "nl": "Bevindt zich op de {level}de verdieping",
+ "de": "Befindet sich im {level}ten Stock",
+ "pt_BR": "Localizado no {level}o andar",
+ "ru": "Расположено на {level}ом этаже"
},
"freeform": {
"key": "level",
@@ -142,7 +153,9 @@
"if": "location=underground",
"then": {
"en": "Located underground",
- "nl": "Bevindt zich ondergronds"
+ "nl": "Bevindt zich ondergronds",
+ "pt_BR": "Localizado no subsolo",
+ "ru": "Расположено под землей"
},
"hideInAnswer": true
},
@@ -150,14 +163,20 @@
"if": "level=0",
"then": {
"en": "Located on the ground floor",
- "nl": "Bevindt zich gelijkvloers"
+ "nl": "Bevindt zich gelijkvloers",
+ "de": "Ist im Erdgeschoss",
+ "pt_BR": "Localizado no térreo",
+ "ru": "Расположено на первом этаже"
}
},
{
"if": "level=1",
"then": {
"en": "Located on the first floor",
- "nl": "Bevindt zich op de eerste verdieping"
+ "nl": "Bevindt zich op de eerste verdieping",
+ "de": "Ist im ersten Stock",
+ "pt_BR": "Localizado no primeiro andar",
+ "ru": "Расположено на первом этаже"
}
}
]
diff --git a/assets/svg/cycle-infra.svg b/assets/themes/cycle_infra/cycle-infra.svg
similarity index 100%
rename from assets/svg/cycle-infra.svg
rename to assets/themes/cycle_infra/cycle-infra.svg
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index fcc1289b5a..cf3e77c344 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -18,13 +18,13 @@
],
"maintainer": "",
"defaultBackgroundId": "CartoDB.Voyager",
- "icon": "./assets/svg/cycle-infra.svg",
+ "icon": "./assets/themes/cycle_infra/cycle-infra.svg",
"version": "0",
"startLat": 51,
"startLon": 3.75,
"startZoom": 11,
"widenFactor": 0.05,
- "socialImage": "./assets/svg/cycle-infra.svg",
+ "socialImage": "./assets/themes/cycle_infra/cycle-infra.svg",
"enableDownload": true,
"layers": [
{
@@ -961,7 +961,7 @@
"render": "40,40,center"
},
"color": {
- "render": "#aaaaaa",
+ "render": "rgba(170, 170, 170, 0.7)",
"mappings": [
{
"if": "highway=cycleway",
@@ -1008,7 +1008,7 @@
},
{
"if": "cycleway=track",
- "then": "30 15"
+ "then": ""
},
{
"if": "cycleway=shared_lane",
diff --git a/assets/themes/cycle_infra/license_info.json b/assets/themes/cycle_infra/license_info.json
index ed362f0a3a..bd6a9f2bb2 100644
--- a/assets/themes/cycle_infra/license_info.json
+++ b/assets/themes/cycle_infra/license_info.json
@@ -1,4 +1,15 @@
[
+ {
+ "authors": [
+ "Dávid Gladiš",
+ "Hannah Declerck"
+ ],
+ "path": "cycle-infra.svg",
+ "license": "CC-BY",
+ "sources": [
+ "https://thenounproject.com/davidgladis/collection/bicycles/?i=808040"
+ ]
+ },
{
"authors": [
"Belgische Wetgever"
diff --git a/assets/themes/widths/width.json b/assets/themes/widths/width.json
index 298b9a1281..f2a4262517 100644
--- a/assets/themes/widths/width.json
+++ b/assets/themes/widths/width.json
@@ -69,7 +69,10 @@
"freeform": {
"key": "width:carriageway",
"type": "length",
- "helperArgs": [21, "map"]
+ "helperArgs": [
+ 21,
+ "map"
+ ]
}
},
{
diff --git a/langs/layers/ru.json b/langs/layers/ru.json
index c0f5353343..74a19a9ccb 100644
--- a/langs/layers/ru.json
+++ b/langs/layers/ru.json
@@ -1057,6 +1057,7 @@
}
},
"viewpoint": {
+ "name": "Смотровая площадка",
"presets": {
"0": {
"title": "Смотровая площадка"
@@ -1069,7 +1070,6 @@
"1": {
"question": "Вы хотите добавить описание?"
}
- },
- "name": "Смотровая площадка"
+ }
}
-}
+}
\ No newline at end of file
diff --git a/langs/shared-questions/de.json b/langs/shared-questions/de.json
index 6faff774e2..5d859a6940 100644
--- a/langs/shared-questions/de.json
+++ b/langs/shared-questions/de.json
@@ -3,30 +3,30 @@
"phone": {
"question": "Was ist die Telefonnummer von {name}?"
},
+ "email": {
+ "question": "Was ist die Mail-Adresse von {name}?"
+ },
+ "website": {
+ "question": "Was ist die Website von {name}?"
+ },
+ "description": {
+ "question": "Gibt es noch etwas, das die vorhergehenden Fragen nicht abgedeckt haben? Hier wäre Platz dafür. Bitte keine bereits erhobenen Informationen."
+ },
"opening_hours": {
"question": "Was sind die Öffnungszeiten von {name}?",
"render": "
Öffnungszeiten
{opening_hours_table(opening_hours)}"
},
"level": {
+ "question": "In welchem Stockwerk befindet sich dieses Objekt?",
+ "render": "Befindet sich im {level}ten Stock",
"mappings": {
- "2": {
- "then": "Ist im ersten Stock"
- },
"1": {
"then": "Ist im Erdgeschoss"
+ },
+ "2": {
+ "then": "Ist im ersten Stock"
}
- },
- "render": "Befindet sich im {level}ten Stock",
- "question": "In welchem Stockwerk befindet sich dieses Objekt?"
- },
- "description": {
- "question": "Gibt es noch etwas, das die vorhergehenden Fragen nicht abgedeckt haben? Hier wäre Platz dafür. Bitte keine bereits erhobenen Informationen."
- },
- "website": {
- "question": "Was ist die Website von {name}?"
- },
- "email": {
- "question": "Was ist die Mail-Adresse von {name}?"
+ }
}
}
-}
+}
\ No newline at end of file
diff --git a/langs/shared-questions/pt_BR.json b/langs/shared-questions/pt_BR.json
index 9c577c3966..7016de7f0e 100644
--- a/langs/shared-questions/pt_BR.json
+++ b/langs/shared-questions/pt_BR.json
@@ -1,30 +1,30 @@
{
"undefined": {
- "level": {
- "render": "Localizado no {level}o andar",
- "mappings": {
- "2": {
- "then": "Localizado no primeiro andar"
- },
- "1": {
- "then": "Localizado no térreo"
- },
- "0": {
- "then": "Localizado no subsolo"
- }
- }
- },
- "opening_hours": {
- "question": "Qual o horário de funcionamento de {name}?"
- },
- "website": {
- "question": "Qual o site de {name}?"
+ "phone": {
+ "question": "Qual o número de telefone de {name}?"
},
"email": {
"question": "Qual o endereço de e-mail de {name}?"
},
- "phone": {
- "question": "Qual o número de telefone de {name}?"
+ "website": {
+ "question": "Qual o site de {name}?"
+ },
+ "opening_hours": {
+ "question": "Qual o horário de funcionamento de {name}?"
+ },
+ "level": {
+ "render": "Localizado no {level}o andar",
+ "mappings": {
+ "0": {
+ "then": "Localizado no subsolo"
+ },
+ "1": {
+ "then": "Localizado no térreo"
+ },
+ "2": {
+ "then": "Localizado no primeiro andar"
+ }
+ }
}
}
-}
+}
\ No newline at end of file
diff --git a/langs/shared-questions/ru.json b/langs/shared-questions/ru.json
index 93c56dc441..d1df15a6fc 100644
--- a/langs/shared-questions/ru.json
+++ b/langs/shared-questions/ru.json
@@ -17,18 +17,18 @@
"render": "