mirror of
https://github.com/gpxstudio/gpx.studio.git
synced 2026-04-18 01:21:19 +00:00
Merge branch 'dev'
This commit is contained in:
@@ -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.
|
||||
|
||||
|
||||
@@ -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>.
|
||||
|
||||
@@ -10,7 +10,7 @@ title: Desnivel
|
||||
|
||||
# <MountainSnow size="24" class="inline-block" style="margin-bottom: 5px" /> { title }
|
||||
|
||||
Le permite añadir datos de desnivel a trazas y [puntos de interés](../gpx), o reemplazar los datos existentes.
|
||||
Esta herramienta permite añadir datos de elevación a los rastros y [puntos de interés](../gpx), o reemplazar los datos existentes.
|
||||
|
||||
<div class="flex flex-row justify-center">
|
||||
<Elevation class="text-foreground p-3 border rounded-md shadow-lg" />
|
||||
@@ -18,7 +18,7 @@ Le permite añadir datos de desnivel a trazas y [puntos de interés](../gpx), o
|
||||
|
||||
<DocsNote>
|
||||
|
||||
Elevation data is provided by <a href="https://maptiler.com" target="_blank">MapTiler</a>.
|
||||
You can learn more about its origin and accuracy in the <a href="https://docs.maptiler.com/guides/map-tiling-hosting/data-hosting/rgb-terrain-by-maptiler/" target="_blank">documentation</a>.
|
||||
Los datos de notificación son proporcionados por <a href="https://maptiler.com" target="_blank">MapTiler</a>.
|
||||
Puedes aprender más sobre su origen y precisión en la <a href="https://docs.maptiler.com/guides/map-tiling-hosting/data-hosting/rgb-terrain-by-maptiler/" target="_blank">documentación</a>.
|
||||
|
||||
</DocsNote>
|
||||
|
||||
@@ -18,8 +18,8 @@ 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.
|
||||
Reorder items by drag-and-drop if needed.
|
||||
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>
|
||||
|
||||
|
||||
@@ -162,19 +162,19 @@ 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) {
|
||||
if (!allowed) return filtered;
|
||||
Object.keys(allowed).forEach((key) => {
|
||||
if (Object.hasOwn(t, key)) {
|
||||
filtered[key] = t[key];
|
||||
const allowedVal = allowed[key];
|
||||
if (typeof allowedVal === 'boolean') {
|
||||
filtered[key] = typeof t?.[key] === 'boolean' ? t[key] : allowedVal;
|
||||
} else {
|
||||
filtered[key] = allowed[key];
|
||||
filtered[key] = filterLayerTree(
|
||||
typeof t?.[key] === 'object' ? (t[key] as LayerTreeType) : {},
|
||||
allowedVal
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
Object.entries(t).forEach(([key, value]) => {
|
||||
Object.entries(t ?? {}).forEach(([key, value]) => {
|
||||
if (
|
||||
!Object.hasOwn(filtered, key) &&
|
||||
(key.startsWith('custom-') || key.startsWith('extension-'))
|
||||
@@ -182,18 +182,6 @@ function filterLayerTree(t: LayerTreeType, allowed: LayerTreeType | undefined):
|
||||
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
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
return filtered;
|
||||
}
|
||||
|
||||
|
||||
@@ -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",
|
||||
@@ -234,7 +234,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 +276,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 +494,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 +503,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",
|
||||
@@ -536,7 +536,7 @@
|
||||
},
|
||||
"embedding": {
|
||||
"title": "Crear su propio mapa",
|
||||
"maptiler_key": "MapTiler key (optional, only required for MapTiler maps)",
|
||||
"maptiler_key": "Clave MapTiler (opcional, sólo se requiere para mapas MapTiler)",
|
||||
"file_urls": "URLs de archivo (separados por comas)",
|
||||
"drive_ids": "IDs de archivo de Google Drive (separados por comas)",
|
||||
"basemap": "Mapa base",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user