11 Commits

Author SHA1 Message Date
vcoppe
08d1f1d5e4 New Crowdin updates (#334)
* New translations en.json (Basque)

* New translations en.json (Dutch)

* New translations en.json (Catalan)

* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Spanish)

* New translations en.json (Belarusian)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Hebrew)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Korean)

* New translations en.json (Lithuanian)

* New translations en.json (Norwegian)

* New translations en.json (Polish)

* New translations en.json (Portuguese)

* New translations en.json (Russian)

* New translations en.json (Swedish)

* New translations en.json (Turkish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Indonesian)

* New translations en.json (Thai)

* New translations en.json (Latvian)

* New translations en.json (Chinese Traditional, Hong Kong)

* New translations en.json (Serbian (Latin))

* New translations view.mdx (Romanian)

* New translations view.mdx (French)

* New translations view.mdx (Spanish)

* New translations view.mdx (Belarusian)

* New translations view.mdx (Catalan)

* New translations view.mdx (Czech)

* New translations view.mdx (Danish)

* New translations view.mdx (German)

* New translations view.mdx (Greek)

* New translations view.mdx (Basque)

* New translations view.mdx (Finnish)

* New translations view.mdx (Hebrew)

* New translations view.mdx (Hungarian)

* New translations view.mdx (Italian)

* New translations view.mdx (Korean)

* New translations view.mdx (Lithuanian)

* New translations view.mdx (Dutch)

* New translations view.mdx (Norwegian)

* New translations view.mdx (Polish)

* New translations view.mdx (Portuguese)

* New translations view.mdx (Russian)

* New translations view.mdx (Swedish)

* New translations view.mdx (Turkish)

* New translations view.mdx (Ukrainian)

* New translations view.mdx (Chinese Simplified)

* New translations view.mdx (Vietnamese)

* New translations view.mdx (Portuguese, Brazilian)

* New translations view.mdx (Indonesian)

* New translations view.mdx (Thai)

* New translations view.mdx (Latvian)

* New translations view.mdx (Chinese Traditional, Hong Kong)

* New translations view.mdx (Serbian (Latin))

* New translations en.json (French)
2026-04-19 19:03:58 +02:00
vcoppe
f3bf4f0096 add minimize icon 2026-04-19 18:29:38 +02:00
vcoppe
b4094d0a5b slightly resize routing controls 2026-04-19 18:20:01 +02:00
JCarrasco
36122b4ac5 Add fullscreen view mode (#324)
Closes #301
2026-04-19 18:12:02 +02:00
vcoppe
dd9aba3adb fine tuning 2026-04-19 16:49:32 +02:00
vcoppe
bd40fbae74 fix routing controls on mobile 2026-04-19 16:34:06 +02:00
vcoppe
690cbc49cc avoid querying features when dragging 2026-04-19 16:31:50 +02:00
vcoppe
36b16ddeef catch errors when fetching styles and add fallback one 2026-04-19 14:47:19 +02:00
vcoppe
16b8988fa7 fix layer filtering, must allow unknown intermediary keys 2026-04-17 22:10:30 +02:00
Pablo Ovelleiro Corral
40f97b7c35 Fix: overlays bikerouterGravel, cyclOSMlite, mapterhornHillshade, openRailwayMap cannot be toggled in Layer settings (#329) 2026-04-17 20:07:51 +02:00
vcoppe
54b3113480 New Crowdin updates (#326)
* New translations en.json (Spanish)

* New translations merge.mdx (Spanish)

* New translations elevation.mdx (Spanish)

* New translations en.json (Chinese Traditional, Hong Kong)

* New translations en.json (Spanish)

* New translations integration.mdx (Spanish)

* New translations merge.mdx (Spanish)

* New translations integration.mdx (Spanish)

* New translations map-controls.mdx (Spanish)
2026-04-17 20:00:51 +02:00
74 changed files with 378 additions and 114 deletions

View File

@@ -43,6 +43,8 @@
BookOpenText,
ChartArea,
Maximize,
Maximize2,
Minimize2,
} from '@lucide/svelte';
import { map } from '$lib/components/map/map';
import { editMetadata } from '$lib/components/file-list/metadata/utils.svelte';
@@ -70,7 +72,7 @@
import { copied, selection } from '$lib/logic/selection';
import { allHidden } from '$lib/logic/hidden';
import { boundsManager } from '$lib/logic/bounds';
import { tick } from 'svelte';
import { tick, onMount } from 'svelte';
import { allowedPastes } from '$lib/components/file-list/sortable-file-list';
const {
@@ -105,6 +107,23 @@
}
let layerSettingsOpen = $state(false);
let fullscreen = $state(false);
function toggleFullscreen() {
if (!document.fullscreenElement) {
document.documentElement.requestFullscreen?.();
} else {
document.exitFullscreen?.();
}
}
onMount(() => {
const handler = () => {
fullscreen = document.fullscreenElement !== null;
};
document.addEventListener('fullscreenchange', handler);
return () => document.removeEventListener('fullscreenchange', handler);
});
</script>
<div class="absolute md:top-2 left-0 right-0 z-20 flex flex-row justify-center pointer-events-none">
@@ -377,6 +396,16 @@
{i18n._('menu.toggle_3d')}
<Shortcut key={i18n._('menu.right_click_drag')} />
</Menubar.Item>
<Menubar.Separator />
<Menubar.CheckboxItem checked={fullscreen} onCheckedChange={toggleFullscreen}>
{#if fullscreen}
<Minimize2 size="16" />
{:else}
<Maximize2 size="16" />
{/if}
{i18n._('menu.fullscreen')}
<Shortcut key="F11" />
</Menubar.CheckboxItem>
</Menubar.Content>
</Menubar.Menu>
<Menubar.Menu>

View File

@@ -142,6 +142,7 @@ export class MapLayerEventManager {
}
private _handleMouseMove(e: maplibregl.MapMouseEvent) {
if (e.originalEvent.buttons > 0) return;
const featuresByLayer = this._getRenderedFeaturesByLayer(e);
Object.keys(this._listeners).forEach((layerId) => {
const features = featuresByLayer[layerId] || [];

View File

@@ -81,8 +81,13 @@ export class StyleManager {
let basemap = get(currentBasemap);
const basemapInfo = basemaps[basemap] ?? custom[basemap]?.value ?? basemaps[defaultBasemap];
const basemapStyle = await this.get(basemapInfo);
let basemapStyle = basemaps.openStreetMap as maplibregl.StyleSpecification;
try {
basemapStyle = await this.get(basemapInfo);
} catch (e) {
console.error(e.message);
}
this.merge(style, basemapStyle);
if (this._maptilerKey !== '') {
@@ -109,45 +114,52 @@ export class StyleManager {
if (!layers[overlay]) {
if (this._pastOverlays.has(overlay)) {
const overlayInfo = custom[overlay]?.value ?? overlays[overlay];
const overlayStyle = await this.get(overlayInfo);
for (let layer of overlayStyle.layers ?? []) {
if (map_.getLayer(layer.id)) {
map_.removeLayer(layer.id);
try {
const overlayStyle = await this.get(overlayInfo);
for (let layer of overlayStyle.layers ?? []) {
if (map_.getLayer(layer.id)) {
map_.removeLayer(layer.id);
}
}
} catch (e) {
// Should not happen
}
this._pastOverlays.delete(overlay);
}
} else {
const overlayInfo = custom[overlay]?.value ?? overlays[overlay];
const overlayStyle = await this.get(overlayInfo);
const opacity = overlayOpacities[overlay];
try {
const overlayStyle = await this.get(overlayInfo);
const opacity = overlayOpacities[overlay];
for (let sourceId in overlayStyle.sources) {
if (!map_.getSource(sourceId)) {
map_.addSource(sourceId, overlayStyle.sources[sourceId]);
}
}
for (let layer of overlayStyle.layers ?? []) {
if (!map_.getLayer(layer.id)) {
if (opacity !== undefined) {
if (layer.type === 'raster') {
if (!layer.paint) {
layer.paint = {};
}
layer.paint['raster-opacity'] = opacity;
} else if (layer.type === 'hillshade') {
if (!layer.paint) {
layer.paint = {};
}
layer.paint['hillshade-exaggeration'] = opacity / 2;
}
for (let sourceId in overlayStyle.sources) {
if (!map_.getSource(sourceId)) {
map_.addSource(sourceId, overlayStyle.sources[sourceId]);
}
map_.addLayer(layer, ANCHOR_LAYER_KEY.overlays);
}
}
this._pastOverlays.add(overlay);
for (let layer of overlayStyle.layers ?? []) {
if (!map_.getLayer(layer.id)) {
if (opacity !== undefined) {
if (layer.type === 'raster') {
if (!layer.paint) {
layer.paint = {};
}
layer.paint['raster-opacity'] = opacity;
} else if (layer.type === 'hillshade') {
if (!layer.paint) {
layer.paint = {};
}
layer.paint['hillshade-exaggeration'] = opacity / 2;
}
}
map_.addLayer(layer, ANCHOR_LAYER_KEY.overlays);
}
}
this._pastOverlays.add(overlay);
} catch (e) {
console.error(e.message);
}
}
}
} catch (e) {}
@@ -181,6 +193,9 @@ export class StyleManager {
styleUrl = styleUrl.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
const response = await fetch(styleUrl, { cache: 'force-cache' });
if (!response.ok) {
throw new Error(`HTTP error fetching style "${styleInfo}": ${response.status}`);
}
const style = await response.json();
return style;
} else {

View File

@@ -57,8 +57,10 @@ export class RoutingControls {
updateControlsBinded: () => void = this.updateControls.bind(this);
appendAnchorBinded: (e: MapMouseEvent) => void = this.appendAnchor.bind(this);
addIntermediateAnchorBinded: (e: MapMouseEvent) => void = this.addIntermediateAnchor.bind(this);
draggedAnchorIndex: number | null = null;
lastDraggedAnchorEventTime: number = 0;
draggingStartingPosition: maplibregl.Point = new maplibregl.Point(0, 0);
onMouseEnterBinded: () => void = this.onMouseEnter.bind(this);
onMouseLeaveBinded: () => void = this.onMouseLeave.bind(this);
@@ -133,6 +135,7 @@ export class RoutingControls {
map_.on('style.load', this.updateControlsBinded);
map_.on('click', this.appendAnchorBinded);
layerEventManager.on('mousemove', this.fileId, this.showTemporaryAnchorBinded);
layerEventManager.on('click', this.fileId, this.addIntermediateAnchorBinded);
this.fileUnsubscribe = this.file.subscribe(this.updateControlsBinded);
}
@@ -237,6 +240,7 @@ export class RoutingControls {
map_?.off('style.load', this.updateControlsBinded);
map_?.off('click', this.appendAnchorBinded);
layerEventManager?.off('mousemove', this.fileId, this.showTemporaryAnchorBinded);
layerEventManager?.off('click', this.fileId, this.addIntermediateAnchorBinded);
map_?.off('mousemove', this.updateTemporaryAnchorBinded);
this.layers.forEach((layer) => {
@@ -521,12 +525,19 @@ export class RoutingControls {
if (get(streetViewEnabled) && get(streetViewSource) === 'google') {
return;
}
if (
this.draggedAnchorIndex !== null ||
Date.now() - this.lastDraggedAnchorEventTime < 100
) {
// Exit if anchor is being dragged
return;
}
if (
e.target.queryRenderedFeatures(e.point, {
layers: [...this.layers.values()].map((layer) => layer.id),
layers: [this.fileId, ...[...this.layers.values()].map((layer) => layer.id)],
}).length
) {
// Clicked on routing control, ignoring
// Clicked on routing control or layer, ignoring
return;
}
this.appendAnchorWithCoordinates({
@@ -598,6 +609,15 @@ export class RoutingControls {
await this.routeBetweenAnchors([lastAnchor, newAnchor], [lastAnchorPoint, newAnchorPoint]);
}
addIntermediateAnchor(e: maplibregl.MapMouseEvent) {
e.preventDefault();
if (this.temporaryAnchor !== null) {
this.turnIntoPermanentAnchor();
return;
}
}
getNeighbouringAnchors(anchor: Anchor): [Anchor | null, Anchor | null] {
let previousAnchor: Anchor | null = null;
let nextAnchor: Anchor | null = null;
@@ -800,7 +820,7 @@ export class RoutingControls {
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<circle cx="10" cy="10" r="8" fill="white" stroke="black" stroke-width="2" />
</svg>`,
_map.getCanvasContainer().offsetWidth > 1000 ? 50 : 80
_map.getCanvasContainer().offsetWidth > 1000 ? 56 : 80
);
}
@@ -818,8 +838,11 @@ export class RoutingControls {
onClick(e: MapLayerMouseEvent) {
e.preventDefault();
if (this.temporaryAnchor !== null) {
this.turnIntoPermanentAnchor();
if (
this.draggedAnchorIndex !== null ||
Date.now() - this.lastDraggedAnchorEventTime < 100
) {
// Exit if anchor is being dragged
return;
}
@@ -908,6 +931,8 @@ export class RoutingControls {
lat: e.lngLat.lat,
lon: e.lngLat.lng,
});
this.lastDraggedAnchorEventTime = Date.now();
}
onMouseUp(e: MapLayerMouseEvent | MapLayerTouchEvent) {
@@ -946,6 +971,7 @@ export class RoutingControls {
}
this.draggedAnchorIndex = null;
this.lastDraggedAnchorEventTime = Date.now();
}
showTemporaryAnchor(e: MapLayerMouseEvent) {

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
Каб кіраваць арыентацыяй і нахілам карты, вы таксама можаце перацягнуць карту, утрымліваючы <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Opcions de vista
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Entra o surt de la vista de mapa en 3D.
Per controlar l'orientació i inclinació del mapa, pots arrossegar el mapa mentre prems <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Možnosti zobrazení
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Zapnout nebo vypnout 3D zobrazení mapy.
Chcete-li ovládat orientaci a náklon mapy, můžete ji také potáhnout s přidržením klávesy <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Anzeigeoptionen
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Aufrufen oder Beenden der 3D-Kartenansicht.
Um die Ausrichtung und Neigung der Karte zu steuern, können Sie die Karte auch ziehen, während Sie <kbd>die Strg-Taste</kbd> gedrückt halten.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -46,4 +46,9 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -13,8 +13,8 @@ Puede usar **gpx.studio** para crear mapas que muestren sus archivos GPX e integ
Todo lo que necesita es:
1. GPX files hosted on your server or on Google Drive, or accessible via a public URL;
2. _Optional:_ a <a href="https://cloud.maptiler.com/auth/widget?next=https://cloud.maptiler.com/maps/" target="_blank">MapTiler key</a> to load MapTiler maps.
1. Archivos GPX alojados en su servidor o en Google Drive, o accesibles a través de una URL pública;
2. _Opcional:_ una <a href="https://cloud.maptiler.com/auth/widget?next=https://cloud.maptiler.com/maps/" target="_blank">Tecla MapTiler</a> para cargar mapas MapTiler.
Luego puede jugar con el configurador de abajo para personalizar su mapa y generar el código HTML correspondiente.

View File

@@ -69,4 +69,4 @@ Pueden activarse en la [configuración de capas del mapa](./menu/settings).
En estos ajustes, también puede administrar la opacidad de las capas superpuestas.
For advanced users, it is possible to add custom basemaps and overlays by providing <a href="https://en.wikipedia.org/wiki/Web_Map_Tile_Service" target="_blank">WMTS</a>, <a href="https://en.wikipedia.org/wiki/Web_Map_Service" target="_blank">WMS</a>, or <a href="https://maplibre.org/maplibre-style-spec/" target="_blank">MapLibre style JSON</a> URLs.
Para los usuarios avanzados, es posible añadir mapas base y superposiciones personalizadas proporcionando <a href="https://en.wikipedia.org/wiki/Web_Map_Tile_Service" target="_blank">WMTS</a>, <a href="https://en.wikipedia.org/wiki/Web_Map_Service" target="_blank">WMS</a> o URLs <a href="https://docs.mapbox.com/help/glossary/style/" target="_blank">JSON estilo Mapbox</a>.

View File

@@ -3,7 +3,7 @@ title: Opciones de vista
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Entra o sale de la vista 3D del mapa.
Para controlar la orientación e inclinación del mapa, puede arrastrarlo mientras mantiene pulsada la tecla <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -18,7 +18,7 @@ Para usar esta herramienta, necesita [seleccionar](../files-and-stats) múltiple
<DocsNote>
Selected items are merged in the order they appear in the files list.
Los elementos seleccionados se combinan en el orden en que aparecen en la lista de archivos.
Si es necesario, puede reordenar los elementos arrastrando y soltando.
</DocsNote>

View File

@@ -3,7 +3,7 @@ title: Ikusteko aukerak
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Aktibatu edo desaktibatu maparen 3D ikuspegia.
Maparen orientazioa eta okertzea kontrolatzeko, mapa ere arrasta dezakezu <kbd> Ctrl</kbd> sakatzen duzun bitartean.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Options d'affichage
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Entrer ou sortir de la vue 3D de la carte.
Pour contrôler l'orientation et l'inclinaison de la carte, vous pouvez également faire glisser la carte tout en maintenant <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Plein écran
Passer en mode plein écran, ou le quitter.
Vous pouvez également appuyer sur <kbd>F11</kbd> pour activer/désactiver le mode plein écran, ou sur <kbd>Échap</kbd> pour quitter.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Nézet beállításai
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Lépjen be vagy lépjen ki a 3D térképnézetből.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Opzioni di visualizzazione
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Entrare o uscire dalla vista mappa 3D.
Per controllare l'orientamento e l'inclinazione della mappa, puoi anche trascinare la mappa tenendo premuto <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Bekijk opties
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Voer in of verlaat de 3D-mapweergave.
Om de oriëntatie en kanteling van de kaart te bepalen, kun je ook de kaart slepen terwijl je <kbd>Ctrl</kbd> ingedrukt houdt.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Akcje menu Widok
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Włącza lub wychodzi z widoku mapy 3D.
Aby kontrolować orientację i pochylenie mapy, możesz również przeciągnąć mapę przytrzymując <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Ver opções
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Entrar ou sair da visualização do mapa 3D.
Para controlar a orientação e a inclinação do mapa, você também pode arrastar o mapa enquanto segura <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
Чтобы управлять ориентацией и наклоном карты, вы также можете перетаскивать карту, удерживая <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: Görünüm seçenekleri
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Yön işaretlerinin haritada görünürlülüğünü değiştir.
Haritanın oryantasyonunu ve eğimini <kbd>Ctrl</kbd> basılı tutarken sürükleyerek de yapabilirsiniz.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: View options
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ Enter or exit the 3D map view.
To control the orientation and tilt of the map, you can also drag the map while holding <kbd>Ctrl</kbd>.
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -3,7 +3,7 @@ title: 显示
---
<script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script>
@@ -47,3 +47,8 @@ title: 显示
也可在按住 <kbd>Ctrl</kbd> 的同时用鼠标拖拽地图实现此功能。
</DocsNote>
### <Maximize2 size="16" class="inline-block" style="margin-bottom: 2px" /> Full screen
Enter or exit full screen mode.
You can also press <kbd>F11</kbd> to toggle, or <kbd>Escape</kbd> to exit.

View File

@@ -162,38 +162,33 @@ function getLayerValidator(allowed: Record<string, any>, fallback: string) {
function filterLayerTree(t: LayerTreeType, allowed: LayerTreeType | undefined): LayerTreeType {
const filtered: LayerTreeType = {};
const values = Object.values(t);
if (values.length == 0) return filtered;
if (typeof values[0] === 'boolean') {
if (allowed) {
Object.keys(allowed).forEach((key) => {
if (Object.hasOwn(t, key)) {
if (allowed) {
Object.entries(allowed).forEach(([key, value]) => {
if (Object.hasOwn(t, key)) {
if (typeof value === 'boolean') {
filtered[key] = t[key];
} else {
filtered[key] = allowed[key];
} else if (typeof value === 'object') {
filtered[key] = filterLayerTree(
typeof t[key] === 'object' ? t[key] : {},
value
);
}
});
}
Object.entries(t).forEach(([key, value]) => {
if (
!Object.hasOwn(filtered, key) &&
(key.startsWith('custom-') || key.startsWith('extension-'))
) {
} else {
filtered[key] = value;
}
});
} else {
Object.entries(t).forEach(([key, value]) => {
if (typeof value === 'object') {
filtered[key] = filterLayerTree(
value,
typeof allowed === 'object' && typeof allowed[key] === 'object'
? allowed[key]
: undefined
);
}
});
}
Object.entries(t).forEach(([key, value]) => {
if (!Object.hasOwn(filtered, key)) {
if (typeof value === 'boolean') {
if (key.startsWith('custom-') || key.startsWith('extension-')) {
filtered[key] = value;
}
} else if (typeof value === 'object') {
filtered[key] = filterLayerTree(value, undefined);
}
}
});
return filtered;
}

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Налады",
"distance_units": "Адзінкі вымярэння адлегласці",
"metric": "Метрычная",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Canviar al mapa base anterior",
"toggle_overlays": "Intercanvia capes",
"toggle_3d": "Canvia a 3D",
"fullscreen": "Full screen",
"settings": "Configuració",
"distance_units": "Unitats de distancia",
"metric": "Mètric",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Přepnout na předchozí podkladovou mapu",
"toggle_overlays": "Přepnout překryv",
"toggle_3d": "Přepnout 3D",
"fullscreen": "Full screen",
"settings": "Nastavení",
"distance_units": "Jednotky vzdálenosti",
"metric": "Metrické",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings",
"distance_units": "Distance units",
"metric": "Metric",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Zur vorherigen Basemap wechseln",
"toggle_overlays": "Overlay umschalten",
"toggle_3d": "3D umschalten",
"fullscreen": "Full screen",
"settings": "Einstellungen",
"distance_units": "Entfernungseinheiten",
"metric": "Metrisch",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings",
"distance_units": "Μονάδες απόστασης",
"metric": "Μονάδες Μέτρησης",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings",
"distance_units": "Distance units",
"metric": "Metric",

View File

@@ -2,10 +2,10 @@
"metadata": {
"home_title": "el editor online de archivos GPX",
"app_title": "app",
"embed_title": " editor online de archivos GPX",
"embed_title": "Editor online de archivos GPX",
"help_title": "ayuda",
"404_title": "página no encontrada",
"description": "Mira, edita y crea archivos GPX online con planificación avanzada de rutas y herramientas de procesamiento de archivos, bonitos mapas y visualizaciones detalladas de datos."
"description": "Visualiza, edita y crea archivos GPX online con planificación avanzada de rutas y herramientas de procesamiento de archivos, bonitos mapas y visualizaciones detalladas de datos."
},
"menu": {
"new": "Nuevo",
@@ -36,6 +36,7 @@
"switch_basemap": "Cambiar al mapa base anterior",
"toggle_overlays": "Alternar capas",
"toggle_3d": "Alternar 3D",
"fullscreen": "Full screen",
"settings": "Configuración",
"distance_units": "Unidades de distancia",
"metric": "Métrico",
@@ -234,7 +235,7 @@
},
"elevation": {
"button": "Solicitar datos de desnivel",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help": "La solicitud de datos de desnivel borrará los datos de desnivel existentes, si los hay, y los reemplazará con datos de Mapbox.",
"help_no_selection": "Seleccione un elemento del archivo para solicitar datos de desnivel."
},
"waypoint": {
@@ -276,7 +277,7 @@
"new": "Nueva capa personalizada",
"edit": "Editar capa personalizada",
"urls": "URL(s)",
"url_placeholder": "WMTS, WMS or MapLibre style JSON",
"url_placeholder": "WMTS, WMS o JSON estilo Mapbox",
"max_zoom": "Zoom máximo",
"layer_type": "Tipo de capa",
"basemap": "Mapa base",
@@ -494,7 +495,7 @@
"email": "Email",
"contribute": "Contribuir",
"supported_by": "con el apoyo de",
"features": "Features",
"features": "Características",
"route_planning": "Planificación de ruta",
"route_planning_description": "Una interfaz intuitiva para crear itinerarios adaptados a cada deporte, basada en datos de OpenStreetMap.",
"file_processing": "Procesamiento avanzado de archivo",
@@ -503,15 +504,15 @@
"maps_description": "Una gran colección de mapas base, capas y puntos de interés para ayudarle a crear su próxima aventura al aire libre o visualizar su último logro.",
"data_visualization": "Visualización de datos",
"data_visualization_description": "Un perfil de elevación interactivo con estadísticas detalladas para analizar actividades registradas y futuros objetivos.",
"philosophy": "Philosophy",
"foss": "Free, ad-free and open source",
"foss_description": "The website is free to use, without ads, and the source code is publicly available on GitHub.",
"privacy": "Privacy-friendly",
"philosophy": "Filosofía",
"foss": "Gratis, sin anuncios y código abierto",
"foss_description": "El sitio web es de uso gratuito, sin anuncios, y el código fuente está disponible públicamente en GitHub.",
"privacy": "Respetuosa con la privacidad",
"privacy_description": "Tus archivos GPX nunca abandonan tu navegador. Sin seguimiento, sin recopilación de datos.",
"community": "Made possible by the community",
"community": "Posible gracias a la comunidad",
"community_description": "gpx.studio tiene una comunidad asombrosa que ha cubierto sus costes a través de donaciones durante años, mientras ha dado forma al proyecto a través de sugerencias de características, informes de fallos y traducciones a muchos idiomas.",
"support_button": "Apoya a gpx.studio en Open Collective",
"translate_button": "Help translate the website on Crowdin"
"translate_button": "Ayuda a traducir el sitio web en Crowdin"
},
"docs": {
"translate": "Mejorar la traducción en Crowdin",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Aldatu aurreko mapa erabiltzera",
"toggle_overlays": "Txandakatu geruzak",
"toggle_3d": "Txandakatu 3D",
"fullscreen": "Full screen",
"settings": "Ezarpenak",
"distance_units": "Distantzia unitateak",
"metric": "Metrikoa",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Vaihda edelliseen taustakarttaan",
"toggle_overlays": "Peiteaineistot päälle/pois",
"toggle_3d": "3D päälle/pois",
"fullscreen": "Full screen",
"settings": "Asetukset",
"distance_units": "Mittayksikkö",
"metric": "Metri",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Basculer au fond de carte précédent",
"toggle_overlays": "Afficher/cacher les surcouches",
"toggle_3d": "Activer/désactiver la 3D",
"fullscreen": "Plein écran",
"settings": "Réglages",
"distance_units": "Unités de distance",
"metric": "Métrique",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "הגדרות",
"distance_units": "יחידות מרחק",
"metric": "מטרי",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Váltás az előző alaptérképre",
"toggle_overlays": "Átfedés váltása",
"toggle_3d": "3D nézet bekapcsolása",
"fullscreen": "Full screen",
"settings": "Beállítások",
"distance_units": "Távolságmérés mértékegységei",
"metric": "Metrikus",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Beralih ke peta dasar sebelumnya",
"toggle_overlays": "Beralih lapisan",
"toggle_3d": "Beralih 3D",
"fullscreen": "Full screen",
"settings": "Pengaturan",
"distance_units": "Satuan jarak",
"metric": "Metrik",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Passa alla mappa di base precedente",
"toggle_overlays": "Attiva / disattiva le sovrapposizioni",
"toggle_3d": "Attiva / disattiva 3D",
"fullscreen": "Full screen",
"settings": "Impostazioni",
"distance_units": "Unità distanza",
"metric": "Metrico",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "이전 배경 지도로 전환",
"toggle_overlays": "오버레이 전환",
"toggle_3d": "3D 전환",
"fullscreen": "Full screen",
"settings": "설정",
"distance_units": "거리 단위",
"metric": "미터법",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Grįžti į ankstesnį bazinį žemėlapį",
"toggle_overlays": "Kaitalioti sluoksnius",
"toggle_3d": "Kaitalioti rodymą 3D",
"fullscreen": "Full screen",
"settings": "Nustatymai",
"distance_units": "Atstumo vienetai",
"metric": "Metriniai",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings",
"distance_units": "Distance units",
"metric": "Metric",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Schakel over naar vorige basiskaart",
"toggle_overlays": "Schermlagen in- of uitschakelen",
"toggle_3d": "3D aan/uit",
"fullscreen": "Full screen",
"settings": "Instellingen",
"distance_units": "Afstandseenheden",
"metric": "Metrische eenheden",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Bytt til forrige basekart",
"toggle_overlays": "Vis eller skjul kartlag",
"toggle_3d": "Skru av/på 3D",
"fullscreen": "Full screen",
"settings": "Innstillinger",
"distance_units": "Avstandsenhet",
"metric": "Metrisk",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Przełącz na poprzednią mapę",
"toggle_overlays": "Przełącz nakładki",
"toggle_3d": "Przełącz widok 3D",
"fullscreen": "Full screen",
"settings": "Ustawienia",
"distance_units": "Jednostki odległości",
"metric": "Metryczne",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Trocar para mapa base anterior",
"toggle_overlays": "Alternar sobreposições",
"toggle_3d": "Alternar 3D",
"fullscreen": "Full screen",
"settings": "Configurações",
"distance_units": "Unidades de distância",
"metric": "Métrico",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Trocar para mapa base anterior",
"toggle_overlays": "Alternar sobreposições",
"toggle_3d": "Alternar 3D",
"fullscreen": "Full screen",
"settings": "Configurações",
"distance_units": "Unidades de distância",
"metric": "Métrico",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Comutați la harta de bază anterioară",
"toggle_overlays": "Comută suprapunerile",
"toggle_3d": "Comută 3D",
"fullscreen": "Full screen",
"settings": "Setări",
"distance_units": "Unități de distanță",
"metric": "Metric",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Переключиться на предыдущую базовую карту",
"toggle_overlays": "Переключить слои",
"toggle_3d": "Включить 3D",
"fullscreen": "Full screen",
"settings": "Настройки",
"distance_units": "Единицы измерения расстояния",
"metric": "Метрические",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Vrati prethodnu osnovnu mapu",
"toggle_overlays": "Sakrij/Prikaži preklapanja",
"toggle_3d": "Sakrij/Prikaži 3D",
"fullscreen": "Full screen",
"settings": "Podešavanja",
"distance_units": "Jedinica razdaljine",
"metric": "Metričke",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Växla till föregående baskarta",
"toggle_overlays": "Växla överlagring",
"toggle_3d": "Växla 3D",
"fullscreen": "Full screen",
"settings": "Inställningar",
"distance_units": "Enhet för distans",
"metric": "Metrisk",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings",
"distance_units": "Distance units",
"metric": "Metric",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Önceki temel haritaya geç",
"toggle_overlays": "Katmanları Aç/Kapa",
"toggle_3d": "3B'yi aç/kapat",
"fullscreen": "Full screen",
"settings": "Ayarlar",
"distance_units": "Mesafe birimleri",
"metric": "Metrik",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Перехід до попередньої базової карти",
"toggle_overlays": "Перемикання накладок",
"toggle_3d": "Перемикнути 3D",
"fullscreen": "Full screen",
"settings": "Налаштування",
"distance_units": "Одиниці виміру відстані",
"metric": "Метричні",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "Quay lại bản đồ trước đó",
"toggle_overlays": "Thay đổi lớp phủ",
"toggle_3d": "Chuyển đổi 3D",
"fullscreen": "Full screen",
"settings": "Cài đặt",
"distance_units": "Đơn vị khoảng cách",
"metric": "Hệ mét",

View File

@@ -16,9 +16,9 @@
"duplicate": "Duplicate",
"copy": "Copy",
"paste": "Paste",
"cut": "Cut",
"export": "Export...",
"export_all": "Export all...",
"cut": "剪下",
"export": "匯出……",
"export_all": "匯出所有……",
"export_options": "Export options",
"support_message": "The tool is free to use, but not free to run. Please consider supporting the website if you use it frequently. Thank you!",
"support_button": "Help keep the website free",
@@ -36,6 +36,7 @@
"switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings",
"distance_units": "Distance units",
"metric": "Metric",

View File

@@ -36,6 +36,7 @@
"switch_basemap": "切换到上一个底图",
"toggle_overlays": "切换叠加层",
"toggle_3d": "三维视图",
"fullscreen": "Full screen",
"settings": "设置",
"distance_units": "距离单位",
"metric": "公制",