Add first version of schools

This commit is contained in:
pietervdvn 2022-06-07 19:48:09 +02:00
parent 1bc40e2464
commit 39258ff422
20 changed files with 805 additions and 22 deletions

View file

@ -5,6 +5,7 @@ import BaseUIElement from "../UI/BaseUIElement";
import List from "../UI/Base/List"; import List from "../UI/Base/List";
import Title from "../UI/Base/Title"; import Title from "../UI/Base/Title";
import {BBox} from "./BBox"; import {BBox} from "./BBox";
import {Feature, Geometry, MultiPolygon, Polygon} from "@turf/turf";
export interface ExtraFuncParams { export interface ExtraFuncParams {
/** /**
@ -12,9 +13,9 @@ export interface ExtraFuncParams {
* Note that more features then requested can be given back. * Note that more features then requested can be given back.
* Format: [ [ geojson, geojson, geojson, ... ], [geojson, ...], ...] * Format: [ [ geojson, geojson, geojson, ... ], [geojson, ...], ...]
*/ */
getFeaturesWithin: (layerId: string, bbox: BBox) => any[][], getFeaturesWithin: (layerId: string, bbox: BBox) => Feature<Geometry, {id: string}>[][],
memberships: RelationsTracker memberships: RelationsTracker
getFeatureById: (id: string) => any getFeatureById: (id: string) => Feature<Geometry, {id: string}>
} }
/** /**
@ -24,21 +25,65 @@ interface ExtraFunction {
readonly _name: string; readonly _name: string;
readonly _args: string[]; readonly _args: string[];
readonly _doc: string; readonly _doc: string;
readonly _f: (params: ExtraFuncParams, feat: any) => any; readonly _f: (params: ExtraFuncParams, feat: Feature<Geometry, any>) => any;
} }
class EnclosingFunc implements ExtraFunction {
_name = "enclosingFeatures"
_doc = ["Gives a list of all features in the specified layers which fully contain this object. Returned features will always be (multi)polygons. (LineStrings and Points from the other layers are ignored)","",
"The result is a list of features: `{feat: Polygon}[]`",
"This function will never return the feature itself."].join("\n")
_args = ["...layerIds - one or more layer ids of the layer from which every feature is checked for overlap)"]
_f(params: ExtraFuncParams, feat: Feature<Geometry, any>) {
return (...layerIds: string[]) => {
const result: { feat: any }[] = []
const bbox = BBox.get(feat)
const seenIds = new Set<string>()
seenIds.add(feat.properties.id)
for (const layerId of layerIds) {
const otherFeaturess = params.getFeaturesWithin(layerId, bbox)
if (otherFeaturess === undefined) {
continue;
}
if (otherFeaturess.length === 0) {
continue;
}
for (const otherFeatures of otherFeaturess) {
for (const otherFeature of otherFeatures) {
if(seenIds.has(otherFeature.properties.id)){
continue
}
seenIds.add(otherFeature.properties.id)
if(otherFeature.geometry.type !== "Polygon" && otherFeature.geometry.type !== "MultiPolygon"){
continue;
}
if(GeoOperations.completelyWithin(feat, <Feature<Polygon | MultiPolygon, any>> otherFeature)){
result.push({feat: otherFeature})
}
}
}
}
return result;
}
}
}
class OverlapFunc implements ExtraFunction { class OverlapFunc implements ExtraFunction {
_name = "overlapWith"; _name = "overlapWith";
_doc = "Gives a list of features from the specified layer which this feature (partly) overlaps with. A point which is embedded in the feature is detected as well." + _doc = ["Gives a list of features from the specified layer which this feature (partly) overlaps with. A point which is embedded in the feature is detected as well.",
"If the current feature is a point, all features that this point is embeded in are given.\n\n" + "If the current feature is a point, all features that this point is embeded in are given." ,
"The returned value is `{ feat: GeoJSONFeature, overlap: number}[]` where `overlap` is the overlapping surface are (in m²) for areas, the overlapping length (in meter) if the current feature is a line or `undefined` if the current feature is a point.\n" + "",
"The resulting list is sorted in descending order by overlap. The feature with the most overlap will thus be the first in the list\n" + "The returned value is `{ feat: GeoJSONFeature, overlap: number}[]` where `overlap` is the overlapping surface are (in m²) for areas, the overlapping length (in meter) if the current feature is a line or `undefined` if the current feature is a point." ,
"\n" + "The resulting list is sorted in descending order by overlap. The feature with the most overlap will thus be the first in the list." ,
"For example to get all objects which overlap or embed from a layer, use `_contained_climbing_routes_properties=feat.overlapWith('climbing_route')`" "",
"For example to get all objects which overlap or embed from a layer, use `_contained_climbing_routes_properties=feat.overlapWith('climbing_route')`",
"",
"Also see [enclosingFeatures](#enclosingFeatures) which can be used to get all objects which fully contain this feature"
].join("\n")
_args = ["...layerIds - one or more layer ids of the layer from which every feature is checked for overlap)"] _args = ["...layerIds - one or more layer ids of the layer from which every feature is checked for overlap)"]
_f(params, feat) { _f(params, feat) {
@ -46,15 +91,15 @@ class OverlapFunc implements ExtraFunction {
const result: { feat: any, overlap: number }[] = [] const result: { feat: any, overlap: number }[] = []
const bbox = BBox.get(feat) const bbox = BBox.get(feat)
for (const layerId of layerIds) { for (const layerId of layerIds) {
const otherLayers = params.getFeaturesWithin(layerId, bbox) const otherFeaturess = params.getFeaturesWithin(layerId, bbox)
if (otherLayers === undefined) { if (otherFeaturess === undefined) {
continue; continue;
} }
if (otherLayers.length === 0) { if (otherFeaturess.length === 0) {
continue; continue;
} }
for (const otherLayer of otherLayers) { for (const otherFeatures of otherFeaturess) {
result.push(...GeoOperations.calculateOverlap(feat, otherLayer)); result.push(...GeoOperations.calculateOverlap(feat, otherFeatures));
} }
} }
@ -392,6 +437,7 @@ export class ExtraFunctions {
private static readonly allFuncs: ExtraFunction[] = [ private static readonly allFuncs: ExtraFunction[] = [
new DistanceToFunc(), new DistanceToFunc(),
new OverlapFunc(), new OverlapFunc(),
new EnclosingFunc(),
new IntersectionFunc(), new IntersectionFunc(),
new ClosestObjectFunc(), new ClosestObjectFunc(),
new ClosestNObjectFunc(), new ClosestNObjectFunc(),

View file

@ -23,6 +23,7 @@ import TileFreshnessCalculator from "./TileFreshnessCalculator";
import FullNodeDatabaseSource from "./TiledFeatureSource/FullNodeDatabaseSource"; import FullNodeDatabaseSource from "./TiledFeatureSource/FullNodeDatabaseSource";
import MapState from "../State/MapState"; import MapState from "../State/MapState";
import {ElementStorage} from "../ElementStorage"; import {ElementStorage} from "../ElementStorage";
import {Feature, Geometry} from "@turf/turf";
/** /**
@ -337,7 +338,7 @@ export default class FeaturePipeline {
} }
public GetAllFeaturesWithin(bbox: BBox): any[][] { public GetAllFeaturesWithin(bbox: BBox): Feature<Geometry, {id: string}>[][] {
const self = this const self = this
const tiles = [] const tiles = []
Array.from(this.perLayerHierarchy.keys()) Array.from(this.perLayerHierarchy.keys())

View file

@ -3,7 +3,7 @@ import {BBox} from "./BBox";
import togpx from "togpx" import togpx from "togpx"
import Constants from "../Models/Constants"; import Constants from "../Models/Constants";
import LayerConfig from "../Models/ThemeConfig/LayerConfig"; import LayerConfig from "../Models/ThemeConfig/LayerConfig";
import {Coord} from "@turf/turf"; import {booleanWithin, Coord, Feature, Geometry, MultiPolygon, Polygon, Properties} from "@turf/turf";
export class GeoOperations { export class GeoOperations {
@ -142,7 +142,10 @@ export class GeoOperations {
return result; return result;
} }
public static pointInPolygonCoordinates(x: number, y: number, coordinates: [number, number][][]) { /**
* Helper function which does the heavy lifting for 'inside'
*/
private static pointInPolygonCoordinates(x: number, y: number, coordinates: [number, number][][]) {
const inside = GeoOperations.pointWithinRing(x, y, /*This is the outer ring of the polygon */coordinates[0]) const inside = GeoOperations.pointWithinRing(x, y, /*This is the outer ring of the polygon */coordinates[0])
if (!inside) { if (!inside) {
return false; return false;
@ -737,6 +740,38 @@ export class GeoOperations {
return turf.bearing(a, b) return turf.bearing(a, b)
} }
/**
* Returns 'true' if one feature contains the other feature
*
* const pond: Feature<Polygon, any> = {
* "type": "Feature",
* "properties": {"natural":"water","water":"pond"},
* "geometry": {
* "type": "Polygon",
* "coordinates": [[
* [4.362924098968506,50.8435422298544 ],
* [4.363272786140442,50.8435219059949 ],
* [4.363213777542114,50.8437420806679 ],
* [4.362924098968506,50.8435422298544 ]
* ]]}}
* const park: Feature<Polygon, any> = {
* "type": "Feature",
* "properties": {"leisure":"park"},
* "geometry": {
* "type": "Polygon",
* "coordinates": [[
* [ 4.36073541641235,50.84323737103244 ],
* [ 4.36469435691833, 50.8423905305197 ],
* [ 4.36659336090087, 50.8458997374786 ],
* [ 4.36254858970642, 50.8468007074916 ],
* [ 4.36073541641235, 50.8432373710324 ]
* ]]}}
* GeoOperations.completelyWithin(pond, park) // => true
* GeoOperations.completelyWithin(park, pond) // => false
*/
static completelyWithin(feature: Feature<Geometry, any>, possiblyEncloingFeature: Feature<Polygon | MultiPolygon, any>) : boolean {
return booleanWithin(feature, possiblyEncloingFeature);
}
} }

View file

@ -155,7 +155,6 @@ export default class MetaTagging {
// Lazy function // Lazy function
const f = (feature: any) => { const f = (feature: any) => {
const oldValue = feature.properties[key]
delete feature.properties[key] delete feature.properties[key]
Object.defineProperty(feature.properties, key, { Object.defineProperty(feature.properties, key, {
configurable: true, configurable: true,

View file

@ -486,7 +486,7 @@ export default class SimpleMetaTaggers {
const subElements: (string | BaseUIElement)[] = [ const subElements: (string | BaseUIElement)[] = [
new Combine([ new Combine([
"Metatags are extra tags available, in order to display more data or to give better questions.", "Metatags are extra tags available, in order to display more data or to give better questions.",
"The are calculated automatically on every feature when the data arrives in the webbrowser. This document gives an overview of the available metatags.", "They are calculated automatically on every feature when the data arrives in the webbrowser. This document gives an overview of the available metatags.",
"**Hint:** when using metatags, add the [query parameter](URL_Parameters.md) `debug=true` to the URL. This will include a box in the popup for features which shows all the properties of the object" "**Hint:** when using metatags, add the [query parameter](URL_Parameters.md) `debug=true` to the URL. This will include a box in the popup for features which shows all the properties of the object"
]).SetClass("flex-col") ]).SetClass("flex-col")

View file

@ -60,7 +60,7 @@ export default interface PointRenderingConfigJson {
rotation?: string | TagRenderingConfigJson; rotation?: string | TagRenderingConfigJson;
/** /**
* A HTML-fragment that is shown below the icon, for example: * A HTML-fragment that is shown below the icon, for example:
* <div style="background: white; display: block">{name}</div> * <div style="background: white">{name}</div>
* *
* If the icon is undefined, then the label is shown in the center of the feature. * If the icon is undefined, then the label is shown in the center of the feature.
* Note that, if the wayhandling hides the icon then no label is shown as well. * Note that, if the wayhandling hides the icon then no label is shown as well.

View file

@ -0,0 +1,205 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="700pt"
height="700pt"
version="1.1"
viewBox="0 0 700 700"
id="svg154"
sodipodi:docname="childcare.svg"
inkscape:version="1.1.2 (1:1.1+202202050950+0a00cf5339)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview156"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:document-units="pt"
showgrid="false"
inkscape:zoom="0.27202157"
inkscape:cx="-84.552117"
inkscape:cy="-124.99009"
inkscape:current-layer="g152" />
<defs
id="defs68">
<symbol
id="v"
overflow="visible">
<path
d="m18.766-1.125c-0.96875 0.5-1.9805 0.875-3.0312 1.125-1.043 0.25781-2.1367 0.39062-3.2812 0.39062-3.3984 0-6.0898-0.94531-8.0781-2.8438-1.9922-1.9062-2.9844-4.4844-2.9844-7.7344 0-3.2578 0.99219-5.8359 2.9844-7.7344 1.9883-1.9062 4.6797-2.8594 8.0781-2.8594 1.1445 0 2.2383 0.13281 3.2812 0.39062 1.0508 0.25 2.0625 0.625 3.0312 1.125v4.2188c-0.98047-0.65625-1.9453-1.1406-2.8906-1.4531-0.94922-0.3125-1.9492-0.46875-3-0.46875-1.875 0-3.3516 0.60547-4.4219 1.8125-1.0742 1.1992-1.6094 2.8555-1.6094 4.9688 0 2.1055 0.53516 3.7617 1.6094 4.9688 1.0703 1.1992 2.5469 1.7969 4.4219 1.7969 1.0508 0 2.0508-0.14844 3-0.45312 0.94531-0.3125 1.9102-0.80078 2.8906-1.4688z"
id="path2" />
</symbol>
<symbol
id="d"
overflow="visible">
<path
d="m13.734-11.141c-0.4375-0.19531-0.87109-0.34375-1.2969-0.4375-0.41797-0.10156-0.83984-0.15625-1.2656-0.15625-1.2617 0-2.2305 0.40625-2.9062 1.2188-0.67969 0.80469-1.0156 1.9531-1.0156 3.4531v7.0625h-4.8906v-15.312h4.8906v2.5156c0.625-1 1.3438-1.7266 2.1562-2.1875 0.82031-0.46875 1.8008-0.70312 2.9375-0.70312 0.16406 0 0.34375 0.011719 0.53125 0.03125 0.19531 0.011719 0.47656 0.039062 0.84375 0.078125z"
id="path5" />
</symbol>
<symbol
id="a"
overflow="visible">
<path
d="m17.641-7.7031v1.4062h-11.453c0.125 1.1484 0.53906 2.0078 1.25 2.5781 0.70703 0.57422 1.7031 0.85938 2.9844 0.85938 1.0312 0 2.082-0.14844 3.1562-0.45312 1.082-0.3125 2.1914-0.77344 3.3281-1.3906v3.7656c-1.1562 0.4375-2.3125 0.76562-3.4688 0.98438-1.1562 0.22656-2.3125 0.34375-3.4688 0.34375-2.7734 0-4.9297-0.70312-6.4688-2.1094-1.5312-1.4062-2.2969-3.3789-2.2969-5.9219 0-2.5 0.75391-4.4609 2.2656-5.8906 1.5078-1.4375 3.582-2.1562 6.2188-2.1562 2.4062 0 4.332 0.73047 5.7812 2.1875 1.4453 1.4492 2.1719 3.3828 2.1719 5.7969zm-5.0312-1.625c0-0.92578-0.27344-1.6719-0.8125-2.2344-0.54297-0.57031-1.25-0.85938-2.125-0.85938-0.94922 0-1.7188 0.26562-2.3125 0.79688s-0.96484 1.2969-1.1094 2.2969z"
id="path8" />
</symbol>
<symbol
id="e"
overflow="visible">
<path
d="m9.2188-6.8906c-1.0234 0-1.793 0.17188-2.3125 0.51562-0.51172 0.34375-0.76562 0.85547-0.76562 1.5312 0 0.625 0.20703 1.1172 0.625 1.4688 0.41406 0.34375 0.98828 0.51562 1.7188 0.51562 0.92578 0 1.7031-0.32812 2.3281-0.98438 0.63281-0.66406 0.95312-1.4922 0.95312-2.4844v-0.5625zm7.4688-1.8438v8.7344h-4.9219v-2.2656c-0.65625 0.92969-1.3984 1.6055-2.2188 2.0312-0.82422 0.41406-1.8242 0.625-3 0.625-1.5859 0-2.8711-0.45703-3.8594-1.375-0.99219-0.92578-1.4844-2.1289-1.4844-3.6094 0-1.7891 0.61328-3.1016 1.8438-3.9375 1.2383-0.84375 3.1797-1.2656 5.8281-1.2656h2.8906v-0.39062c0-0.76953-0.30859-1.332-0.92188-1.6875-0.61719-0.36328-1.5703-0.54688-2.8594-0.54688-1.0547 0-2.0312 0.10547-2.9375 0.3125-0.89844 0.21094-1.7305 0.52344-2.5 0.9375v-3.7344c1.0391-0.25 2.0859-0.44141 3.1406-0.57812 1.0625-0.13281 2.125-0.20312 3.1875-0.20312 2.7578 0 4.75 0.54688 5.9688 1.6406 1.2266 1.0859 1.8438 2.8555 1.8438 5.3125z"
id="path11" />
</symbol>
<symbol
id="c"
overflow="visible">
<path
d="m7.7031-19.656v4.3438h5.0469v3.5h-5.0469v6.5c0 0.71094 0.14062 1.1875 0.42188 1.4375s0.83594 0.375 1.6719 0.375h2.5156v3.5h-4.1875c-1.9375 0-3.3125-0.39844-4.125-1.2031-0.80469-0.8125-1.2031-2.1797-1.2031-4.1094v-6.5h-2.4219v-3.5h2.4219v-4.3438z"
id="path14" />
</symbol>
<symbol
id="k"
overflow="visible">
<path
d="m12.766-13.078v-8.2031h4.9219v21.281h-4.9219v-2.2188c-0.66797 0.90625-1.4062 1.5703-2.2188 1.9844s-1.7578 0.625-2.8281 0.625c-1.8867 0-3.4336-0.75-4.6406-2.25-1.2109-1.5-1.8125-3.4258-1.8125-5.7812 0-2.3633 0.60156-4.2969 1.8125-5.7969 1.207-1.5 2.7539-2.25 4.6406-2.25 1.0625 0 2 0.21484 2.8125 0.64062 0.82031 0.42969 1.5664 1.0859 2.2344 1.9688zm-3.2188 9.9219c1.0391 0 1.8359-0.37891 2.3906-1.1406 0.55078-0.76953 0.82812-1.8828 0.82812-3.3438 0-1.457-0.27734-2.5664-0.82812-3.3281-0.55469-0.76953-1.3516-1.1562-2.3906-1.1562-1.043 0-1.8398 0.38672-2.3906 1.1562-0.55469 0.76172-0.82812 1.8711-0.82812 3.3281 0 1.4609 0.27344 2.5742 0.82812 3.3438 0.55078 0.76172 1.3477 1.1406 2.3906 1.1406z"
id="path17" />
</symbol>
<symbol
id="j"
overflow="visible">
<path
d="m10.5-3.1562c1.0508 0 1.8516-0.37891 2.4062-1.1406 0.55078-0.76953 0.82812-1.8828 0.82812-3.3438 0-1.457-0.27734-2.5664-0.82812-3.3281-0.55469-0.76953-1.3555-1.1562-2.4062-1.1562-1.0547 0-1.8594 0.38672-2.4219 1.1562-0.55469 0.77344-0.82812 1.8828-0.82812 3.3281 0 1.4492 0.27344 2.5586 0.82812 3.3281 0.5625 0.77344 1.3672 1.1562 2.4219 1.1562zm-3.25-9.9219c0.67578-0.88281 1.4219-1.5391 2.2344-1.9688 0.82031-0.42578 1.7656-0.64062 2.8281-0.64062 1.8945 0 3.4453 0.75 4.6562 2.25 1.207 1.5 1.8125 3.4336 1.8125 5.7969 0 2.3555-0.60547 4.2812-1.8125 5.7812-1.2109 1.5-2.7617 2.25-4.6562 2.25-1.0625 0-2.0078-0.21094-2.8281-0.625-0.8125-0.42578-1.5586-1.0859-2.2344-1.9844v2.2188h-4.8906v-21.281h4.8906z"
id="path20" />
</symbol>
<symbol
id="i"
overflow="visible">
<path
d="m0.34375-15.312h4.8906l4.125 10.391 3.5-10.391h4.8906l-6.4375 16.766c-0.64844 1.6953-1.4023 2.8828-2.2656 3.5625-0.86719 0.6875-2 1.0312-3.4062 1.0312h-2.8438v-3.2188h1.5312c0.83203 0 1.4375-0.13672 1.8125-0.40625 0.38281-0.26172 0.67969-0.73047 0.89062-1.4062l0.14062-0.42188z"
id="path23" />
</symbol>
<symbol
id="h"
overflow="visible">
<path
d="m7.8281-16.438v12.453h1.8906c2.1562 0 3.8008-0.53125 4.9375-1.5938 1.1328-1.0625 1.7031-2.6133 1.7031-4.6562 0-2.0195-0.57031-3.5547-1.7031-4.6094-1.125-1.0625-2.7734-1.5938-4.9375-1.5938zm-5.25-3.9688h5.5469c3.0938 0 5.3984 0.21875 6.9219 0.65625 1.5195 0.4375 2.8203 1.1875 3.9062 2.25 0.95703 0.91797 1.6641 1.9805 2.125 3.1875 0.46875 1.1992 0.70312 2.5586 0.70312 4.0781 0 1.543-0.23438 2.918-0.70312 4.125-0.46094 1.2109-1.168 2.2773-2.125 3.2031-1.0938 1.0547-2.4062 1.8047-3.9375 2.25-1.5312 0.4375-3.8281 0.65625-6.8906 0.65625h-5.5469z"
id="path26" />
</symbol>
<symbol
id="g"
overflow="visible">
<path
d="m2.3594-15.312h4.8906v15.312h-4.8906zm0-5.9688h4.8906v4h-4.8906z"
id="path29" />
</symbol>
<symbol
id="u"
overflow="visible">
<path
d="m12.766-2.5938c-0.66797 0.88672-1.4062 1.543-2.2188 1.9688-0.8125 0.41797-1.7578 0.625-2.8281 0.625-1.8672 0-3.4062-0.73438-4.625-2.2031-1.2188-1.4766-1.8281-3.3516-1.8281-5.625 0-2.2891 0.60938-4.1641 1.8281-5.625 1.2188-1.4688 2.7578-2.2031 4.625-2.2031 1.0703 0 2.0156 0.21484 2.8281 0.64062 0.8125 0.41797 1.5508 1.0742 2.2188 1.9688v-2.2656h4.9219v13.766c0 2.457-0.77734 4.3359-2.3281 5.6406-1.5547 1.3008-3.8086 1.9531-6.7656 1.9531-0.94922 0-1.8711-0.074219-2.7656-0.21875-0.89844-0.14844-1.7969-0.37109-2.7031-0.67188v-3.8125c0.86328 0.48828 1.7031 0.85156 2.5156 1.0938 0.82031 0.23828 1.6484 0.35938 2.4844 0.35938 1.6016 0 2.7734-0.35156 3.5156-1.0469 0.75-0.69922 1.125-1.7969 1.125-3.2969zm-3.2188-9.5312c-1.0117 0-1.8047 0.375-2.375 1.125-0.5625 0.74219-0.84375 1.7969-0.84375 3.1719 0 1.3984 0.26953 2.4609 0.8125 3.1875 0.55078 0.71875 1.3516 1.0781 2.4062 1.0781 1.0195 0 1.8125-0.36719 2.375-1.1094 0.5625-0.75 0.84375-1.8008 0.84375-3.1562 0-1.375-0.28125-2.4297-0.84375-3.1719-0.5625-0.75-1.3555-1.125-2.375-1.125z"
id="path32" />
</symbol>
<symbol
id="b"
overflow="visible">
<path
d="m9.6406-12.188c-1.0859 0-1.9141 0.39062-2.4844 1.1719-0.57422 0.78125-0.85938 1.9062-0.85938 3.375s0.28516 2.5938 0.85938 3.375c0.57031 0.77344 1.3984 1.1562 2.4844 1.1562 1.0625 0 1.875-0.38281 2.4375-1.1562 0.57031-0.78125 0.85938-1.9062 0.85938-3.375s-0.28906-2.5938-0.85938-3.375c-0.5625-0.78125-1.375-1.1719-2.4375-1.1719zm0-3.5c2.6328 0 4.6914 0.71484 6.1719 2.1406 1.4766 1.418 2.2188 3.3867 2.2188 5.9062 0 2.5117-0.74219 4.4805-2.2188 5.9062-1.4805 1.418-3.5391 2.125-6.1719 2.125-2.6484 0-4.7148-0.70703-6.2031-2.125-1.4922-1.4258-2.2344-3.3945-2.2344-5.9062 0-2.5195 0.74219-4.4883 2.2344-5.9062 1.4883-1.4258 3.5547-2.1406 6.2031-2.1406z"
id="path35" />
</symbol>
<symbol
id="f"
overflow="visible">
<path
d="m2.5781-20.406h5.875l7.4219 14v-14h4.9844v20.406h-5.875l-7.4219-14v14h-4.9844z"
id="path38" />
</symbol>
<symbol
id="t"
overflow="visible">
<path
d="m0.42188-15.312h4.8906l3.8281 10.578 3.7969-10.578h4.9062l-6.0312 15.312h-5.375z"
id="path41" />
</symbol>
<symbol
id="s"
overflow="visible">
<path
d="m12.422-21.281v3.2188h-2.7031c-0.6875 0-1.1719 0.125-1.4531 0.375-0.27344 0.25-0.40625 0.6875-0.40625 1.3125v1.0625h4.1875v3.5h-4.1875v11.812h-4.8906v-11.812h-2.4375v-3.5h2.4375v-1.0625c0-1.6641 0.46094-2.8984 1.3906-3.7031 0.92578-0.80078 2.3672-1.2031 4.3281-1.2031z"
id="path44" />
</symbol>
<symbol
id="r"
overflow="visible">
<path
d="m16.547-12.766c0.61328-0.94531 1.3477-1.6719 2.2031-2.1719 0.85156-0.5 1.7891-0.75 2.8125-0.75 1.7578 0 3.0977 0.54688 4.0156 1.6406 0.92578 1.0859 1.3906 2.6562 1.3906 4.7188v9.3281h-4.9219v-7.9844-0.35938c0.007813-0.13281 0.015625-0.32031 0.015625-0.5625 0-1.082-0.16406-1.8633-0.48438-2.3438-0.3125-0.48828-0.82422-0.73438-1.5312-0.73438-0.92969 0-1.6484 0.38672-2.1562 1.1562-0.51172 0.76172-0.77344 1.8672-0.78125 3.3125v7.5156h-4.9219v-7.9844c0-1.6953-0.14844-2.7852-0.4375-3.2656-0.29297-0.48828-0.8125-0.73438-1.5625-0.73438-0.9375 0-1.6641 0.38672-2.1719 1.1562-0.51172 0.76172-0.76562 1.8594-0.76562 3.2969v7.5312h-4.9219v-15.312h4.9219v2.2344c0.60156-0.86328 1.2891-1.5156 2.0625-1.9531 0.78125-0.4375 1.6406-0.65625 2.5781-0.65625 1.0625 0 2 0.25781 2.8125 0.76562 0.8125 0.51172 1.4258 1.2305 1.8438 2.1562z"
id="path47" />
</symbol>
<symbol
id="q"
overflow="visible">
<path
d="m17.75-9.3281v9.3281h-4.9219v-7.1094c0-1.3438-0.03125-2.2656-0.09375-2.7656s-0.16797-0.86719-0.3125-1.1094c-0.1875-0.3125-0.44922-0.55469-0.78125-0.73438-0.32422-0.17578-0.69531-0.26562-1.1094-0.26562-1.0234 0-1.8242 0.39844-2.4062 1.1875-0.58594 0.78125-0.875 1.8711-0.875 3.2656v7.5312h-4.8906v-21.281h4.8906v8.2031c0.73828-0.88281 1.5195-1.5391 2.3438-1.9688 0.83203-0.42578 1.75-0.64062 2.75-0.64062 1.7695 0 3.1133 0.54688 4.0312 1.6406 0.91406 1.0859 1.375 2.6562 1.375 4.7188z"
id="path50" />
</symbol>
<symbol
id="p"
overflow="visible">
<path
d="m2.1875-5.9688v-9.3438h4.9219v1.5312c0 0.83594-0.007813 1.875-0.015625 3.125-0.011719 1.25-0.015625 2.0859-0.015625 2.5 0 1.2422 0.03125 2.1328 0.09375 2.6719 0.070313 0.54297 0.17969 0.93359 0.32812 1.1719 0.20703 0.32422 0.47266 0.57422 0.79688 0.75 0.32031 0.16797 0.69141 0.25 1.1094 0.25 1.0195 0 1.8203-0.39062 2.4062-1.1719 0.58203-0.78125 0.875-1.8672 0.875-3.2656v-7.5625h4.8906v15.312h-4.8906v-2.2188c-0.74219 0.89844-1.5234 1.5586-2.3438 1.9844-0.82422 0.41406-1.7344 0.625-2.7344 0.625-1.7617 0-3.1055-0.53906-4.0312-1.625-0.92969-1.082-1.3906-2.6602-1.3906-4.7344z"
id="path53" />
</symbol>
<symbol
id="o"
overflow="visible">
<path
d="m17.75-9.3281v9.3281h-4.9219v-7.1406c0-1.3203-0.03125-2.2344-0.09375-2.7344s-0.16797-0.86719-0.3125-1.1094c-0.1875-0.3125-0.44922-0.55469-0.78125-0.73438-0.32422-0.17578-0.69531-0.26562-1.1094-0.26562-1.0234 0-1.8242 0.39844-2.4062 1.1875-0.58594 0.78125-0.875 1.8711-0.875 3.2656v7.5312h-4.8906v-15.312h4.8906v2.2344c0.73828-0.88281 1.5195-1.5391 2.3438-1.9688 0.83203-0.42578 1.75-0.64062 2.75-0.64062 1.7695 0 3.1133 0.54688 4.0312 1.6406 0.91406 1.0859 1.375 2.6562 1.375 4.7188z"
id="path56" />
</symbol>
<symbol
id="n"
overflow="visible">
<path
d="m2.5781-20.406h8.7344c2.5938 0 4.582 0.57812 5.9688 1.7344 1.3945 1.1484 2.0938 2.7891 2.0938 4.9219 0 2.1367-0.69922 3.7812-2.0938 4.9375-1.3867 1.1562-3.375 1.7344-5.9688 1.7344h-3.4844v7.0781h-5.25zm5.25 3.8125v5.7031h2.9219c1.0195 0 1.8047-0.25 2.3594-0.75 0.5625-0.5 0.84375-1.2031 0.84375-2.1094 0-0.91406-0.28125-1.6172-0.84375-2.1094-0.55469-0.48828-1.3398-0.73438-2.3594-0.73438z"
id="path59" />
</symbol>
<symbol
id="m"
overflow="visible">
<path
d="m2.3594-15.312h4.8906v15.031c0 2.0508-0.49609 3.6172-1.4844 4.7031-0.98047 1.082-2.4062 1.625-4.2812 1.625h-2.4219v-3.2188h0.85938c0.92578 0 1.5625-0.21094 1.9062-0.625 0.35156-0.41797 0.53125-1.2461 0.53125-2.4844zm0-5.9688h4.8906v4h-4.8906z"
id="path62" />
</symbol>
<symbol
id="l"
overflow="visible">
<path
d="m14.719-14.828v3.9844c-0.65625-0.45703-1.3242-0.79688-2-1.0156-0.66797-0.21875-1.3594-0.32812-2.0781-0.32812-1.3672 0-2.4336 0.40234-3.2031 1.2031-0.76172 0.79297-1.1406 1.9062-1.1406 3.3438 0 1.4297 0.37891 2.543 1.1406 3.3438 0.76953 0.79297 1.8359 1.1875 3.2031 1.1875 0.75781 0 1.4844-0.10938 2.1719-0.32812 0.6875-0.22656 1.3203-0.56641 1.9062-1.0156v4c-0.76172 0.28125-1.5391 0.48828-2.3281 0.625-0.78125 0.14453-1.5742 0.21875-2.375 0.21875-2.7617 0-4.9219-0.70703-6.4844-2.125-1.5547-1.4141-2.3281-3.3828-2.3281-5.9062 0-2.5312 0.77344-4.5039 2.3281-5.9219 1.5625-1.4141 3.7227-2.125 6.4844-2.125 0.80078 0 1.5938 0.074219 2.375 0.21875 0.78125 0.13672 1.5547 0.35156 2.3281 0.64062z"
id="path65" />
</symbol>
</defs>
<g
id="g152">
<path
d="m 665.72555,461.26937 c -11.44488,-19.82013 -36.78258,-26.61858 -56.62229,-15.16953 l -151.84212,87.67239 c -0.76012,4.37903 -2.11786,8.99243 -4.48905,13.73029 -4.76149,9.48001 -19.58638,31.25082 -54.39368,29.00874 -29.15682,-1.87885 -158.08372,-40.88858 -163.77458,-42.62398 -0.14342,-0.0431 -13.62994,-4.3504 -27.0102,-0.43983 -4.12093,1.22862 -8.38051,-0.61671 -10.43607,-4.16865 -0.349,-0.61671 -0.64539,-1.29079 -0.85095,-1.99352 -1.41024,-4.81888 1.34341,-9.87677 6.16706,-11.28713 18.99403,-5.57423 37.12648,0.38245 37.62336,0.55456 36.72996,11.1437 136.98468,40.34886 159.46666,41.80156 23.02782,1.48672 33.01927,-11.22496 36.92577,-18.98424 2.83968,-7.20439 3.49468,-12.88339 2.32812,-19.82502 -3.63335,-21.83335 -26.63326,-26.28814 -26.63326,-26.28814 0.005,-0.005 -195.7903,-70.23264 -242.62675,-80.57288 -46.83155,-10.32617 -70.33299,5.58378 -70.33299,5.58378 l -85.807267,49.54114 89.473897,154.98739 53.4146,-30.83471 c 0,0 121.26564,28.05292 190.44211,48.79582 69.18503,20.76738 88.40792,1.50117 88.40792,1.50117 L 650.5521,517.90396 c 19.82012,-11.44966 26.61857,-36.79605 15.16952,-56.62719 z m -211.03937,52.19932 146.70198,-84.69356 c -12.58232,-7.87372 -28.98548,-8.72465 -42.75371,-0.77925 l -113.85038,65.7338 c 4.66112,5.78939 8.0076,12.53949 9.90553,19.73935 z m -35.2332,-37.01634 c 4.43643,1.38637 8.51427,3.35125 12.27636,5.70813 l 122.88601,-70.94003 c -12.58232,-7.88325 -28.99038,-8.72465 -42.7586,-0.77924 l -106.61258,61.5507 z m 88.36998,-82.76723 c -12.58232,-7.88326 -28.98548,-8.72942 -42.74392,-0.7888 l -109.84474,63.4244 28.59263,8.9589 z"
fill-rule="evenodd"
id="path70"
style="stroke-width:1.22384" />
<path
d="m 299.45401,149.72805 c -0.95134,-0.94656 -2.00306,-1.67801 -3.10269,-2.32334 V 93.159125 c 0,-24.897849 -20.17871,-45.076562 -45.07656,-45.076562 -24.89295,0 -45.07656,20.178713 -45.07656,45.076562 v 54.250485 c -1.10432,0.63582 -2.15127,1.37682 -3.09779,2.31857 l -49.48974,49.48973 c -5.93282,5.94237 -5.93282,15.55137 0,21.47966 5.92805,5.93282 15.55137,5.93282 21.46987,0 l 30.634,-30.634 -37.28925,103.07568 h 42.6766 v 54.45119 c 0,8.39005 6.80763,15.18789 15.19278,15.18789 8.39005,0 15.19278,-6.80763 15.19278,-15.18789 v -54.45119 h 19.57169 v 54.45119 c 0,8.39005 6.7933,15.18789 15.17809,15.18789 8.38051,0 15.18788,-6.80763 15.18788,-15.18789 v -54.45119 h 42.68151 l -37.30272,-103.08914 30.64379,30.64868 c 5.92805,5.93283 15.54157,5.92316 21.47966,0 5.92805,-5.92804 5.92805,-15.54157 0,-21.47965 z"
id="path72"
style="stroke-width:1.22384" />
<path
d="m 525.73022,201.75359 -49.47505,-49.48484 c -2.98789,-2.98311 -6.90798,-4.46029 -10.78511,-4.44597 H 390.6627 c -3.901,0 -7.80677,1.48195 -10.7517,4.44597 l -49.49341,49.48974 c -5.92805,5.92805 -5.92805,15.54157 0,21.47966 5.92805,5.93282 15.55136,5.93282 21.47966,0 l 31.10762,-31.11742 v 101.71721 h 4.91446 V 350.12 c 0,8.38051 6.8124,15.1781 15.20257,15.1781 8.39005,0 15.1781,-6.79808 15.1781,-15.1781 v -56.28206 h 19.57168 V 350.12 c 0,8.38051 6.78376,15.1781 15.1781,15.1781 8.3805,0 15.19277,-6.79808 15.19277,-15.1781 v -56.28206 h 4.91447 v -101.727 l 31.11741,31.10762 c 5.92805,5.94714 15.54158,5.93282 21.46497,0 5.92805,-5.92804 5.92805,-15.53667 -0.01,-21.46497 z"
id="path74"
style="stroke-width:1.22384" />
<path
d="m 473.15396,95.697864 c 0,24.897846 -20.18361,45.076556 -45.07657,45.076556 -24.89295,0 -45.07656,-20.17871 -45.07656,-45.076556 0,-24.892954 20.18361,-45.071667 45.07656,-45.071667 24.89296,0 45.07657,20.178713 45.07657,45.071667"
id="path76"
style="stroke-width:1.22384" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1,153 @@
{
"id": "kindergarten_childcare",
"name": {
"en": "Kindergartens and childcare"
},
"description": "Shows kindergartens and preschools. Both are grouped in one layer, as they are regularly confused with each other",
"minzoom": 12,
"source": {
"osmTags": {
"or": [
"amenity=childcare",
"amenity=kindergarten"
]
}
},
"title": {
"mappings": [
{
"if": "amenity=kindergarten",
"then": {
"en": "Kindergarten {name}"
}
},
{
"if": "amenity=childcare",
"then": {
"en": "Childcare {name}"
}
}
]
},
"tagRenderings": [
{
"id": "childcare-type",
"question": {
"en": "What type of facility is this?"
},
"mappings": [
{
"if": "amenity=kindergarten",
"then": {
"en": "This is a kindergarten (also known as <i>preschool</i>) where small kids receive early education."
},
"addExtraTags": [
"isced:level=0",
"isced:2011:level=early_childhood"
]
},
{
"if": "amenity=childcare",
"then": {
"en": "This is a childcare facility, such as a nursery or daycare where small kids are looked after. They do not offer an education and are ofter run as private businesses"
},
"addExtraTags": [
"isced:level=",
"isced:2011:level="
]
}
]
},
{
"id": "name",
"question": "What is the name of this facility?",
"render": "This facility is named <b>{name}</b>",
"freeform": {
"key": "name"
}
},
"website",
"email",
"phone",
{
"builtin": "opening_hours",
"override": {
"question": {
"en": "When is this childcare opened?"
},
"condition": "amenity=childcare"
}
},
{
"id": "capacity",
"question": {
"en": "How much kids (at most) can be enrolled here?"
},
"render": {
"en": "This facility has room for {capacity} kids"
},
"freeform": {
"key": "capacity",
"type": "pnat"
}
}
],
"presets": [
{
"title": {
"en": "a kindergarten"
},
"description": "A kindergarten (also known as <i>preschool</i>) is a school where small kids receive early education.",
"tags": [
"amenity=kindergarten",
"isced:level=0",
"isced:2011:level=early_childhood"
]
},
{
"title": {
"en": "a childcare"
},
"description": "A childcare (also known as <i>a nursery</i> or <i>daycare</i>) is a facility which looks after small kids, but does not offer them an education program.",
"tags": [
"amenity=kindergarten"
]
}
],
"mapRendering": [
{
"location": [
"point",
"centroid"
],
"label": {
"mappings": [
{
"if": "name~*",
"then": "<div class='bg-white rounded-lg p-1'>{name}</div>"
}
]
},
"icon": {
"mappings": [
{
"if": "amenity=kindergarten",
"then": "circle:white;./assets/layers/kindergarten_childcare/childcare.svg"
},
{
"if": "amenity=childcare",
"then": "circle:white;./assets/layers/kindergarten_childcare/childcare.svg"
}
]
}
},
{
"color": "#62fc6c",
"width": 1
}
],
"allowMove": {
"enableRelocation": true,
"enableImproveAccuracy": true
}
}

View file

@ -0,0 +1,12 @@
[
{
"path": "childcare.svg",
"license": "CC-BY",
"authors": [
"Diego Naive"
],
"sources": [
"https://thenounproject.com/icon/child-care-332981/"
]
}
]

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="college"
width="500"
height="500"
viewBox="0 0 500 500"
version="1.1"
sodipodi:docname="college.svg"
inkscape:version="1.1.2 (1:1.1+202202050950+0a00cf5339)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs7" />
<sodipodi:namedview
id="namedview5"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="1.1752248"
inkscape:cx="119.12615"
inkscape:cy="225.48877"
inkscape:current-layer="college" />
<path
d="M 250.0465,31 0,147.68837 66.679067,177.69395 v 56.6772 c -20.00372,6.66791 -33.339534,26.67163 -33.339534,46.67535 0,20.00372 13.335814,40.00744 33.339534,46.67535 v 3.33395 l -30.00558,70.01302 c -10.00186,30.00558 -3.333954,63.34511 46.675346,63.34511 50.009297,0 56.677207,-33.33953 46.675347,-63.34511 L 100.0186,331.0558 c 20.00372,-10.00186 33.33953,-26.67163 33.33953,-50.0093 0,-23.33767 -13.33581,-40.00744 -33.33953,-46.67535 V 194.36371 L 250.0465,264.37673 500.093,147.68837 Z m 146.69395,216.70697 -150.0279,66.67906 -80.01488,-36.67348 v 3.33395 c 0,23.33767 -10.00186,43.34139 -26.67163,60.01116 l 20.00372,46.67535 v 3.33395 c 3.33395,13.33581 6.66791,26.67163 3.33395,40.00744 23.33768,10.00186 50.0093,16.66977 83.34884,16.66977 110.02046,0 150.0279,-66.67907 150.0279,-100.0186 z"
id="path2"
style="stroke-width:33.3395" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,23 @@
[
{
"path": "college.svg",
"license": "CC0",
"authors": [
"Maki"
],
"sources": [
"https://labs.mapbox.com/maki-icons/"
]
},
{
"path": "school.svg",
"license": "CC0",
"authors": [
"Temaki"
],
"sources": [
"https://github.com/ideditor/temaki",
"https://ideditor.github.io/temaki/docs/"
]
}
]

View file

@ -0,0 +1,183 @@
{
"id": "school",
"name": {
"en": "Primary and secondary schools"
},
"minzoom": 12,
"title": {
"render": {
"en": "School <i>{name}</i>"
}
},
"calculatedTags": [
"_enclosing=feat.enclosingFeatures('school').map(f => f.feat.properties.id)",
"_is_enclosed=feat.properties._enclosing != '[]'"
],
"isShown": {
"render": "yes",
"mappings": [
{
"if": {
"and": [
"building~*",
"_is_enclosed=true"
]
},
"then": "no"
}
]
},
"tagRenderings": [
{
"render": {
"en": "This school is named {name}"
},
"question": {
"en": "What is the name of this school?"
},
"freeform": {
"key": "name"
},
"id": "school-name"
},
{
"id": "capacity",
"question": "How much students can at most enroll in this school?",
"render": {
"en": "This school can enroll at most {capacity} students"
},
"freeform": {
"key": "capacity",
"type": "pnat"
}
},
{
"id": "education-level",
"question": "What level of education is given on this school?",
"mappings": [
{
"if": "isced:2011:level=primary",
"then": {
"en": "This is a school where one learns primary skills such as basic literacy and numerical skills. <div class='subtle'>Pupils typically enroll from 6 years old till 12 years old</div>"
}
},
{
"if": "isced:2011:level=vocational_lower_secondary",
"then": {
"en": "This is a school where one learns <b>vocational lower secondary</b> skills with a focus to acquire the necessary knowledge and skill for a particular occupation or trade. <div class='subtle'>This includes programs with a work-based component such as apprenticeships or dual-system education. This is commonly called middle education. Pupils typically enroll from 12 years old till 14 or 15 years old</div>"
}
},
{
"if": "isced:2011:level=general_lower_secondary",
"then": {
"en": "This is a school where one learns <b>general lower secondary</b> skills with a focus on general skills in order to prepare student for further studies. <div class='subtle'>This is commonly called middle education. Pupils typically enroll from 12 years old till 14 or 15 years old</div>"
}
},
{
"if": "isced:2011:level=vocational_upper_secondary",
"then": {
"en": "This is a school where one learns <b>vocational upper secondary</b> skills with a focus to acquire the necessary knowledge and skill for a particular occupation or trade. <div class='subtle'>This includes programs with a work-based component such as apprenticeships or dual-system education. Pupils typically enroll from 14 or 15 years old till 18 years old</div>"
}
},
{
"if": "isced:2011:level=general_upper_secondary",
"then": {
"en": "This is a school where one learns <b>general upper secondary</b> skills with a focus on general skills in order to prepare student for further studies. <div class='subtle'>Pupils typically enroll from 14 or 15 years old till 18 years old</div>"
}
}
],
"multiAnswer": true
},
{
"id": "target-audience",
"question": "What is the target audience for this school?",
"multiAnswer": true,
"mappings": [
{
"if": "school:for=normal_pupils",
"then": {
"en": "This is a school where students study skills at their age-adequate level"
}
},
{
"if": "school:for=adults",
"then": {
"en": "This is a school where adults are taught skills on the level as specified."
}
},
{
"if": "school:for=autism",
"then": {
"en": "This is a school with facilities for students on the autism specturm"
}
},
{
"if": "school:for=learning_disabilities",
"then": {
"en": "This is a school with facilities for students with learning disabilities"
}
},
{
"if": "school:for=blind",
"then": {
"en": "This is a school with facilities for blind students or students with sight impairments"
}
},
{
"if": "school:for=deaf",
"then": {
"en": "This is a school with facilities for deaf students or students with hearing impairments"
}
},
{
"if": "school:for=disabilities",
"then": {
"en": "This is a school with facilities for students with disabilities"
}
}
]
},
"website",
"phone",
"email"
],
"presets": [
{
"tags": [
"amenity=school","fixme=Added with MapComplete, the precise geometry should still be drawn"
],
"title": {
"en": "a primary or secondary school"
}
}
],
"source": {
"osmTags": "amenity=school"
},
"mapRendering": [
{
"icon": "circle:white;./assets/layers/school/school.svg",
"label": {
"mappings": [
{
"if": "name~*",
"then": "<div class='bg-white rounded-lg p-1'>{name}</div>"
}
]
},
"iconSize": {
"render": "40,40,center"
},
"location": [
"point",
"centroid"
]
},
{
"color": "#fcd862",
"width": 1
}
]
}

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
x="0"
y="0"
viewBox="0 0 15 15"
id="svg6"
sodipodi:docname="school.svg"
inkscape:version="1.1.2 (1:1.1+202202050950+0a00cf5339)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs10" />
<sodipodi:namedview
id="namedview8"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="19.217129"
inkscape:cx="3.5385098"
inkscape:cy="1.4570334"
inkscape:current-layer="svg6" />
<path
d="M 9.1416908,2.1457729 V 12.854227 c 0,0 -7.1389694,0 -7.1389694,0 0,0 0,-10.7084541 0,-10.7084541 z M 8.4277939,2.8596699 H 2.7166183 V 12.14033 c 0,0 5.7111756,0 5.7111756,0 z M 3.7874637,5.0013607 c 0,0 3.5694848,0 3.5694848,0 0.3569484,0 0.3569484,0.7138969 0,0.7138969 0,0 -3.5694848,0 -3.5694848,0 -0.3569484,0 -0.3569484,-0.7138969 0,-0.7138969 z m 0,1.4277939 c 0,0 3.5694848,0 3.5694848,0 0.3569484,0 0.3569484,0.7138969 0,0.7138969 0,0 -3.5694848,0 -3.5694848,0 -0.3569484,0 -0.3569484,-0.7138969 0,-0.7138969 z m 0,1.4277939 c 0,0 3.5694848,0 3.5694848,0 0.3569484,0 0.3569484,0.7138969 0,0.7138969 0,0 -3.5694848,0 -3.5694848,0 -0.3569484,0 -0.3569484,-0.7138969 0,-0.7138969 z m 0,1.4277939 c 0,0 3.5694848,0 3.5694848,0 0.3569484,0 0.3569484,0.7138969 0,0.7138969 0,0 -3.5694848,0 -3.5694848,0 -0.3569484,0 -0.3569484,-0.7138969 0,-0.7138969 z"
id="path2"
style="stroke-width:0.713897" />
<path
d="m 9.8555878,11.426433 c 0.3569482,0.356949 1.7847422,0.356949 2.1416912,0 0,0 -0.713897,1.427794 -1.070846,1.427794 -0.356948,0 -1.0708452,-1.427794 -1.0708452,-1.427794 z m 0,-7.1389693 c 0,0.3569485 2.1416912,0.3569485 2.1416912,0 0,0 0,6.4250723 0,6.4250723 0,0.356949 -2.1416912,0.356949 -2.1416912,0 0,0 0,-6.4250723 0,-6.4250723 z M 10.926433,2.1457729 c -1.0708452,0 -1.0708452,0.3569485 -1.0708452,0.713897 0,0 0,0.7138969 0,0.7138969 0,0.3569485 2.1416912,0.3569485 2.1416912,0 0,0 0,-0.7138969 0,-0.7138969 0,-0.3569485 0,-0.713897 -1.070846,-0.713897 z"
id="path4"
style="stroke-width:0.713897" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -17,6 +17,22 @@
], ],
"sources": [] "sources": []
}, },
{
"path": "SocialImageBanner.png",
"license": "CC0",
"authors": [
"Pieter Vander Vennet"
],
"sources": []
},
{
"path": "SocialImageBanner.svg",
"license": "CC0",
"authors": [
"Pieter Vander Vennet"
],
"sources": []
},
{ {
"path": "SocialImageSmall.png", "path": "SocialImageSmall.png",
"license": "CC-BY-SA 4.0", "license": "CC-BY-SA 4.0",

View file

@ -259,6 +259,10 @@
"if": "theme=postboxes", "if": "theme=postboxes",
"then": "./assets/themes/postboxes/postbox.svg" "then": "./assets/themes/postboxes/postbox.svg"
}, },
{
"if": "theme=schools",
"then": "./assets/layers/school/college.svg"
},
{ {
"if": "theme=shops", "if": "theme=shops",
"then": "./assets/themes/shops/shop.svg" "then": "./assets/themes/shops/shop.svg"

View file

@ -0,0 +1,20 @@
{
"id": "schools",
"description": {
"en": "On this map, you'll find information about all types of schools and eduction and can easily add more information"
},
"title": {
"en": "Education"
},
"defaultBackgroundId": "CartoDB.Voyager",
"maintainer": "MapComplete",
"version": "0.0.1",
"startLat": 0,
"startLon": 0,
"startZoom": 0,
"icon": "./assets/layers/school/college.svg",
"layers": [
"kindergarten_childcare",
"school"
]
}

6
package-lock.json generated
View file

@ -11,6 +11,7 @@
"dependencies": { "dependencies": {
"@babel/preset-env": "7.13.8", "@babel/preset-env": "7.13.8",
"@parcel/service-worker": "^2.6.0", "@parcel/service-worker": "^2.6.0",
"@turf/boolean-intersects": "^6.5.0",
"@turf/buffer": "^6.5.0", "@turf/buffer": "^6.5.0",
"@turf/collect": "^6.5.0", "@turf/collect": "^6.5.0",
"@turf/distance": "^6.5.0", "@turf/distance": "^6.5.0",
@ -26,7 +27,6 @@
"@types/prompt-sync": "^4.1.0", "@types/prompt-sync": "^4.1.0",
"@types/wikidata-sdk": "^6.1.0", "@types/wikidata-sdk": "^6.1.0",
"@types/xml2js": "^0.4.9", "@types/xml2js": "^0.4.9",
"core-js": "^3.22.8",
"country-language": "^0.1.7", "country-language": "^0.1.7",
"doctest-ts-improved": "^0.8.6", "doctest-ts-improved": "^0.8.6",
"email-validator": "^2.0.4", "email-validator": "^2.0.4",
@ -4899,6 +4899,7 @@
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz",
"integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==", "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==",
"hasInstallScript": true, "hasInstallScript": true,
"optional": true,
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/core-js" "url": "https://opencollective.com/core-js"
@ -20572,7 +20573,8 @@
"core-js": { "core-js": {
"version": "3.22.8", "version": "3.22.8",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz",
"integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==" "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==",
"optional": true
}, },
"core-js-compat": { "core-js-compat": {
"version": "3.12.0", "version": "3.12.0",

View file

@ -67,6 +67,7 @@
"dependencies": { "dependencies": {
"@babel/preset-env": "7.13.8", "@babel/preset-env": "7.13.8",
"@parcel/service-worker": "^2.6.0", "@parcel/service-worker": "^2.6.0",
"@turf/boolean-intersects": "^6.5.0",
"@turf/buffer": "^6.5.0", "@turf/buffer": "^6.5.0",
"@turf/collect": "^6.5.0", "@turf/collect": "^6.5.0",
"@turf/distance": "^6.5.0", "@turf/distance": "^6.5.0",

View file

@ -72,6 +72,19 @@ knownLicenses.set("streetcomplete", {
sources: ["https://github.com/streetcomplete/StreetComplete/tree/master/res/graphics", "https://f-droid.org/packages/de.westnordost.streetcomplete/"] sources: ["https://github.com/streetcomplete/StreetComplete/tree/master/res/graphics", "https://f-droid.org/packages/de.westnordost.streetcomplete/"]
}) })
knownLicenses.set("temaki", {
authors: ["Temaki"],
path: undefined,
license: "CC0",
sources: ["https://github.com/ideditor/temaki","https://ideditor.github.io/temaki/docs/"]
})
knownLicenses.set("maki", {
authors: ["Maki"],
path: undefined,
license: "CC0",
sources: ["https://labs.mapbox.com/maki-icons/"]
})
knownLicenses.set("t", { knownLicenses.set("t", {
authors: [], authors: [],