forked from MapComplete/MapComplete
WIP
This commit is contained in:
parent
32e0c18b09
commit
181c5583d2
5 changed files with 51 additions and 19 deletions
|
@ -1,5 +1,6 @@
|
|||
|
||||
|
||||
|
||||
Metatags
|
||||
==========
|
||||
|
||||
|
|
|
@ -187,7 +187,7 @@ class DistanceToFunc implements ExtraFunction {
|
|||
|
||||
class ClosestObjectFunc implements ExtraFunction {
|
||||
_name = "closest"
|
||||
_doc = "Given either a list of geojson features or a single layer name, gives the single object which is nearest to the feature. In the case of ways/polygons, only the centerpoint is considered. Returns a single geojson feature or undefined if nothing is found (or not yet laoded)"
|
||||
_doc = "Given either a list of geojson features or a single layer name, gives the single object which is nearest to the feature. In the case of ways/polygons, only the centerpoint is considered. Returns a single geojson feature or undefined if nothing is found (or not yet loaded)"
|
||||
|
||||
_args = ["list of features or a layer name or '*' to get all features"]
|
||||
|
||||
|
|
|
@ -469,6 +469,8 @@ export class RewriteSpecial extends DesugaringStep<TagRenderingConfigJson> {
|
|||
.replace(/\{/g, "&LBRACE")
|
||||
.replace(/}/g, "&RBRACE")
|
||||
args.push(txt)
|
||||
} else if(typeof v === "object"){
|
||||
args.push(JSON.stringify(v))
|
||||
} else {
|
||||
args.push(v)
|
||||
}
|
||||
|
|
|
@ -1202,6 +1202,35 @@ export default class SpecialVisualizations {
|
|||
|
||||
}))
|
||||
}
|
||||
},
|
||||
{
|
||||
funcName: "multi",
|
||||
docs: "Given an embedded tagRendering (read only) and a key, will read the keyname as a JSON-list. Every element of this list will be considered as tags and rendered with the tagRendering",
|
||||
example: "```json\n"+JSON.stringify({
|
||||
render: {
|
||||
special: {
|
||||
type: "multi",
|
||||
key: "_doors_from_building_properties",
|
||||
tagRendering: {
|
||||
render: "The building containing this feature has a <a href='#{id}'>door</a> of width {entrance:width}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}, null, " ")+"```",
|
||||
args: [
|
||||
{name: "key",
|
||||
doc: "The property to read and to interpret as a list of properties"},
|
||||
{
|
||||
name:"tagrendering",
|
||||
doc: "An entire tagRenderingConfig"
|
||||
}
|
||||
]
|
||||
,
|
||||
constr(state, featureTags, args) {
|
||||
const [key, tr] = args
|
||||
console.log("MULTI: ", key, tr)
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
@ -366,8 +366,10 @@
|
|||
],
|
||||
"overrideAll": {
|
||||
"+calculatedTags": [
|
||||
"_poi_walls_and_buildings_entrance_properties=feat.closestn('walls_and_buildings', 1, undefined, 1000).map(w => ({id: w.feat.properties.id, width: w.feat.properties['_entrance:width']}))[0]",
|
||||
"_poi_entrance:id=JSON.parce(feat.properties._poi_walls_and_buildings_entrance_properteis)?.id",
|
||||
"_poi_walls_and_buildings_entrance_properties=[].concat(...feat.closestn('walls_and_buildings',1, undefined, 500).map(w => ({id: w.feat.properties.id, width: w.feat.properties['_entrance_properties']})))",
|
||||
"_poi_walls_and_buildings_entrance_count=[].concat(...feat.overlapWith('walls_and_buildings').map(w => ({id: w.feat.properties.id, width: w.feat.properties['_entrance_properties']})))",
|
||||
"_poi_walls_and_buildings_entrance_properties_with_width=feat.get('_poi_walls_and_buildings_entrance_properties').filter(p => p['width'] !== undefined)",
|
||||
"_poi_entrance:id=JSON.parse(feat.properties._poi_walls_and_buildings_entrance_properteis)?.id",
|
||||
"_poi_entrance:width=JSON.parse(feat.properties._poi_walls_and_buildings_entrance_properties)?.width"
|
||||
],
|
||||
"+tagRenderings": [
|
||||
|
@ -381,25 +383,23 @@
|
|||
"door="
|
||||
]
|
||||
},
|
||||
"mappings": [{
|
||||
"if": "_poi_walls_and_buildings_entrance_properties_with_width=[]",
|
||||
"then": {
|
||||
"en": "The containing building has {}"
|
||||
}
|
||||
}],
|
||||
"render": {
|
||||
"en": "The containing building can be entered via <a href='#{_poi_entrance:id}'>a door of {canonical(_poi_entrance:width)}</a>",
|
||||
"fr": "On peut entrer dans ce batiment via <a href='#{_poi_entrance:id}'>une porte de {canonical(_poi_entrance:width)}</a>",
|
||||
"de": "Das Gebäude kann über <a href='#{_poi_entrance:id}'>durch eine Tür von {canonical(_poi_entrance:width)} betreten werden.</a>"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "_poi_entrance:width",
|
||||
"type": "distance"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "_poi_entrance:width=",
|
||||
"then": {
|
||||
"en": "The containing building has no information on door widths. Add a door and measure the width to get information",
|
||||
"fr": "Ce bâtiment n'a aucune information sur les largeurs de portes. Ajoutez une porte et mesurez la largeur pour obtenir des informations",
|
||||
"de": "Das Gebäude hat keine Informationen über Türbreiten. Fügen Sie eine Tür hinzu und messen Sie die Breite, um Informationen zu erhalten"
|
||||
"special": {
|
||||
"type": "multi",
|
||||
"key": "_poi_walls_and_buildings_entrance_properties",
|
||||
"tagrendering": {
|
||||
"en": "The containing building can be entered via <a href='#{_poi_entrance:id}'>a door of {canonical(_poi_entrance:width)}</a>",
|
||||
"fr": "On peut entrer dans ce batiment via <a href='#{_poi_entrance:id}'>une porte de {canonical(_poi_entrance:width)}</a>",
|
||||
"de": "Das Gebäude kann über <a href='#{_poi_entrance:id}'>durch eine Tür von {canonical(_poi_entrance:width)} betreten werden.</a>"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue