Merge master

This commit is contained in:
Pieter Vander Vennet 2024-09-12 21:43:23 +02:00
commit 3088c829c5
9 changed files with 55 additions and 31 deletions

View file

@ -9371,4 +9371,4 @@
"render": "Turbina eòlica" "render": "Turbina eòlica"
} }
} }
} }

View file

@ -9655,4 +9655,4 @@
"render": "větrná turbína" "render": "větrná turbína"
} }
} }
} }

View file

@ -3033,6 +3033,7 @@
"climbing_opportunity": { "climbing_opportunity": {
"description": "Rückfallebene mit Orten, auf denen Klettern eventuell möglich ist. Sie wird erst angezeigt, wenn man stark hineinzoomt, um zu verhindern, dass Elemente doppelt hinzugefügt werden", "description": "Rückfallebene mit Orten, auf denen Klettern eventuell möglich ist. Sie wird erst angezeigt, wenn man stark hineinzoomt, um zu verhindern, dass Elemente doppelt hinzugefügt werden",
"name": "Klettermöglichkeiten?", "name": "Klettermöglichkeiten?",
"snapName": "eine Wand, Klippe oder ein Felsen",
"tagRenderings": { "tagRenderings": {
"climbing-opportunity-name": { "climbing-opportunity-name": {
"render": "<strong>{name}</strong>" "render": "<strong>{name}</strong>"
@ -3434,6 +3435,7 @@
"cycleways_and_roads": { "cycleways_and_roads": {
"description": "Infrastruktur, die man mit dem Fahrrad befahren kann, begleitet von diesbezüglichen Fragen", "description": "Infrastruktur, die man mit dem Fahrrad befahren kann, begleitet von diesbezüglichen Fragen",
"name": "Radwege und Straßen", "name": "Radwege und Straßen",
"snapName": "eine Straße oder einen Radweg",
"tagRenderings": { "tagRenderings": {
"Cycleway type for a road": { "Cycleway type for a road": {
"mappings": { "mappings": {
@ -5153,19 +5155,19 @@
"then": "Pommesbude" "then": "Pommesbude"
}, },
"10": { "10": {
"then": "Hier werden chinesische Gerichte serviert" "then": "Chinesisch"
}, },
"11": { "11": {
"then": "Hier werden griechische Gerichte serviert" "then": "Griechisch"
}, },
"12": { "12": {
"then": "Hier werden indische Gerichte serviert" "then": "Indisch"
}, },
"13": { "13": {
"then": "Hier werden türkische Gerichte serviert" "then": "Türkisches Restaurant"
}, },
"14": { "14": {
"then": "Hier werden thailändische Gerichte serviert" "then": "Thailändisches Restaurant"
}, },
"2": { "2": {
"then": "Bietet vorwiegend Pastagerichte an" "then": "Bietet vorwiegend Pastagerichte an"
@ -5176,17 +5178,20 @@
"4": { "4": {
"then": "Sandwichladen" "then": "Sandwichladen"
}, },
"5": {
"then": "Burgersrestaurant"
},
"6": { "6": {
"then": "Hier wird Sushi serviert" "then": "Sushi-Restaurant"
}, },
"7": { "7": {
"then": "Hier wird Kaffee serviert" "then": "Kaffeebar"
}, },
"8": { "8": {
"then": "Dies ist ein italienisches Restaurant (das mehr als nur Pasta und Pizza serviert)" "then": "Italienisches Restaurant (das mehr als nur Pasta und Pizza serviert)"
}, },
"9": { "9": {
"then": "Hier werden französische Gerichte serviert" "then": "Französisches Restaurant"
} }
}, },
"question": "Was für Essen gibt es hier?", "question": "Was für Essen gibt es hier?",
@ -5699,6 +5704,9 @@
}, },
"1": { "1": {
"then": "Dies ist ein traditioneller (softwareorientierter) Hackerspace" "then": "Dies ist ein traditioneller (softwareorientierter) Hackerspace"
},
"2": {
"then": "Dies ist ein <b>Hackerspace/Hack-Lab</b>, das sich hauptsächlich auf grundlegende Computerkenntnisse konzentriert, recycelte Geräte verwendet und/oder der Gemeinschaft Internet bereitstellt. Es befindet sich typischerweise in autonomen Räumen, besetzten Häusern oder sozialen Einrichtungen."
} }
}, },
"question": "Ist dies ein Hackerspace oder ein Makerspace?" "question": "Ist dies ein Hackerspace oder ein Makerspace?"
@ -5910,6 +5918,7 @@
"indoors": { "indoors": {
"description": "Grundlegende Innenraumkartierung: zeigt Umrisse von Räumen", "description": "Grundlegende Innenraumkartierung: zeigt Umrisse von Räumen",
"name": "Innenräume", "name": "Innenräume",
"snapName": "eine Innenwand",
"tagRenderings": { "tagRenderings": {
"name": { "name": {
"freeform": { "freeform": {
@ -5952,6 +5961,9 @@
"14": { "14": {
"then": "Dies ist ein Büro" "then": "Dies ist ein Büro"
}, },
"15": {
"then": "Dies ist ein Kopierraum"
},
"16": { "16": {
"then": "Dies ist eine Gefängniszelle" "then": "Dies ist eine Gefängniszelle"
}, },
@ -6079,6 +6091,7 @@
"title": "einen Bordstein" "title": "einen Bordstein"
} }
}, },
"snapName": "ein Bordstein",
"tagRenderings": { "tagRenderings": {
"kerb-height": { "kerb-height": {
"freeform": { "freeform": {
@ -7296,7 +7309,8 @@
}, },
"pedestrian_path": { "pedestrian_path": {
"description": "Fußgängerwege, insbesondere für die Navigation in Gebäuden und die Aufnahme von Eingängen in diese Ebene", "description": "Fußgängerwege, insbesondere für die Navigation in Gebäuden und die Aufnahme von Eingängen in diese Ebene",
"name": "Fußgängerwege" "name": "Fußgängerwege",
"snapName": "ein Fußweg"
}, },
"pharmacy": { "pharmacy": {
"description": "Eine Ebene mit Apotheken, die (wahrscheinlich) verschreibungspflichtige Medikamente ausgeben", "description": "Eine Ebene mit Apotheken, die (wahrscheinlich) verschreibungspflichtige Medikamente ausgeben",
@ -8183,6 +8197,9 @@
}, },
"4": { "4": {
"then": "Dieser Ort bietet kabelgebundenen Internetzugang" "then": "Dieser Ort bietet kabelgebundenen Internetzugang"
},
"5": {
"then": "Dieser Ort bietet sowohl drahtloses Internet als auch Internetzugang über ein Terminal oder einen Computer"
} }
}, },
"question": "Bietet dieser Ort Internetzugang?" "question": "Bietet dieser Ort Internetzugang?"
@ -9037,6 +9054,7 @@
"shelter": { "shelter": {
"description": "Eine Ebene, die verschiedene Bauformen von Unterständen zeigt", "description": "Eine Ebene, die verschiedene Bauformen von Unterständen zeigt",
"name": "Unterstände", "name": "Unterstände",
"snapName": "ein Unterstand",
"tagRenderings": { "tagRenderings": {
"shelter-type": { "shelter-type": {
"mappings": { "mappings": {
@ -12005,6 +12023,7 @@
}, },
"walls_and_buildings": { "walls_and_buildings": {
"description": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden.", "description": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden.",
"snapName": "eine Wand oder ein Gebäude",
"tagRenderings": { "tagRenderings": {
"entrance_info": { "entrance_info": {
"mappings": { "mappings": {
@ -12235,4 +12254,4 @@
"render": "Windrad" "render": "Windrad"
} }
} }
} }

View file

@ -2731,7 +2731,7 @@
"then": "Hamburguesas" "then": "Hamburguesas"
}, },
"6": { "6": {
"then": "Aquí se sirve sushi" "then": "Restaurante de sushi"
}, },
"7": { "7": {
"then": "Aquí se sirve café" "then": "Aquí se sirve café"
@ -2740,7 +2740,7 @@
"then": "Este es un restaurante italiano (que sirve algo más que pasta y pizza)" "then": "Este es un restaurante italiano (que sirve algo más que pasta y pizza)"
}, },
"9": { "9": {
"then": "Aquí se sirven platos Franceses" "then": "Restaurante francés"
} }
}, },
"question": "¿Qué tipo de comida sirven aquí?", "question": "¿Qué tipo de comida sirven aquí?",
@ -5079,4 +5079,4 @@
} }
} }
} }
} }

View file

@ -7559,4 +7559,4 @@
"render": "éolienne" "render": "éolienne"
} }
} }
} }

View file

@ -3707,4 +3707,4 @@
"render": "turbina wiatrowa" "render": "turbina wiatrowa"
} }
} }
} }

View file

@ -34,7 +34,12 @@
export let coordinate: { lon: number; lat: number } = undefined export let coordinate: { lon: number; lat: number } = undefined
/** /**
* The center of the map at all times * Max distance that one is allowed to move, to prevent to stray too much
*/
export let maxDistanceInMeters = 50
/**
* The resulting location; either the map center or the snapped coordinate
* If undefined at the beginning, 'coordinate' will be used * If undefined at the beginning, 'coordinate' will be used
*/ */
export let value: UIEventSource<{ lon: number; lat: number }> export let value: UIEventSource<{ lon: number; lat: number }>
@ -57,11 +62,6 @@
export let snappedTo: UIEventSource<WayId | undefined> export let snappedTo: UIEventSource<WayId | undefined>
let preciseLocation: UIEventSource<{ lon: number; lat: number }> = new UIEventSource<{
lon: number
lat: number
}>(undefined)
const map: UIEventSource<MlMap> = new UIEventSource<MlMap>(undefined) const map: UIEventSource<MlMap> = new UIEventSource<MlMap>(undefined)
export let mapProperties: Partial<MapProperties> & { location } = { export let mapProperties: Partial<MapProperties> & { location } = {
zoom: new UIEventSource<number>(19), zoom: new UIEventSource<number>(19),
@ -69,10 +69,7 @@
/*If no snapping needed: the value is simply the map location; /*If no snapping needed: the value is simply the map location;
* If snapping is needed: the value will be set later on by the snapping feature source * If snapping is needed: the value will be set later on by the snapping feature source
* */ * */
location: location: new UIEventSource<{ lon: number; lat: number }>(coordinate),
snapToLayers?.length > 0
? new UIEventSource<{ lon: number; lat: number }>(coordinate)
: value,
bounds: new UIEventSource<BBox>(undefined), bounds: new UIEventSource<BBox>(undefined),
allowMoving: new UIEventSource<boolean>(true), allowMoving: new UIEventSource<boolean>(true),
allowZooming: new UIEventSource<boolean>(true), allowZooming: new UIEventSource<boolean>(true),
@ -143,15 +140,16 @@
}) })
withCorrectedAttributes.features.addCallbackAndRunD((f) => console.log("Snapped point is", f)) withCorrectedAttributes.features.addCallbackAndRunD((f) => console.log("Snapped point is", f))
} }
</script> </script>
<LocationInput <LocationInput
{map} {map}
on:click on:click
{mapProperties} {mapProperties}
value={preciseLocation} value={ snapToLayers?.length > 0 ? new UIEventSource(undefined) : value}
initialCoordinate={coordinate} initialCoordinate={coordinate}
maxDistanceInMeters={50} {maxDistanceInMeters}
> >
<slot name="image" slot="image"> <slot name="image" slot="image">
<Move_arrows class="h-full max-h-24" /> <Move_arrows class="h-full max-h-24" />

View file

@ -18,9 +18,15 @@
/** /**
* A visualisation to pick a location on a map background * A visualisation to pick a location on a map background
*/ */
/**
* The center of the map. If it contains a value (and initialCoordinate is not given), this will be used as start coordinate
*/
export let value: UIEventSource<{ lon: number; lat: number }> export let value: UIEventSource<{ lon: number; lat: number }>
export let initialCoordinate: { lon: number; lat: number } export let initialCoordinate: { lon: number; lat: number } = undefined
initialCoordinate = initialCoordinate ?? value.data initialCoordinate = initialCoordinate ?? value.data
/**
* Max distance that one is allowed to stray from the initial coordinate
*/
export let maxDistanceInMeters: number = undefined export let maxDistanceInMeters: number = undefined
export let mapProperties: Partial<MapProperties> & { export let mapProperties: Partial<MapProperties> & {
readonly location: UIEventSource<{ lon: number; lat: number }> readonly location: UIEventSource<{ lon: number; lat: number }>

View file

@ -106,6 +106,7 @@
snapToLayers={$reason.snapTo} snapToLayers={$reason.snapTo}
targetLayer={layer} targetLayer={layer}
dontShow={[id]} dontShow={[id]}
maxDistanceInMeters={200}
/> />
<div class="absolute bottom-0 left-0"> <div class="absolute bottom-0 left-0">
<OpenBackgroundSelectorButton {state} /> <OpenBackgroundSelectorButton {state} />