8 Commits

Author SHA1 Message Date
vcoppe
98257bee12 Merge branch 'dev' 2026-04-06 18:26:22 +02:00
vcoppe
5561b7d9fe Merge branch 'dev' 2026-04-06 14:26:56 +02:00
vcoppe
320887206c Merge branch 'dev' 2026-04-04 23:15:01 +02:00
vcoppe
04a1bf6a55 Merge branch 'dev' 2026-04-03 08:47:57 +02:00
vcoppe
0989371874 Merge branch 'dev' 2026-04-03 08:06:19 +02:00
vcoppe
3dcd6e52d3 Merge branch 'dev' 2026-04-02 22:35:46 +02:00
vcoppe
0f06d0d461 update 2026-04-02 22:23:34 +02:00
vcoppe
db33310a10 revert some changes 2026-04-02 22:20:47 +02:00
86 changed files with 259 additions and 685 deletions

View File

@@ -1,20 +1,17 @@
{ {
"$schema": "https://shadcn-svelte.com/schema.json", "$schema": "https://shadcn-svelte.com/schema.json",
"tailwind": { "style": "default",
"css": "src/app.css", "tailwind": {
"baseColor": "neutral" "css": "src/app.css",
}, "baseColor": "slate"
"aliases": { },
"components": "$lib/components", "aliases": {
"utils": "$lib/utils", "components": "$lib/components",
"ui": "$lib/components/ui", "utils": "$lib/utils",
"hooks": "$lib/hooks", "ui": "$lib/components/ui",
"lib": "$lib" "hooks": "$lib/hooks",
}, "lib": "$lib"
"typescript": true, },
"registry": "https://shadcn-svelte.com/registry", "typescript": true,
"style": "nova", "registry": "https://shadcn-svelte.com/registry"
"iconLibrary": "lucide",
"menuColor": "default",
"menuAccent": "subtle"
} }

View File

@@ -14,6 +14,7 @@
"@maplibre/maplibre-gl-geocoder": "^1.9.4", "@maplibre/maplibre-gl-geocoder": "^1.9.4",
"chart.js": "^4.5.1", "chart.js": "^4.5.1",
"chartjs-plugin-zoom": "^2.2.0", "chartjs-plugin-zoom": "^2.2.0",
"clsx": "^2.1.1",
"dexie": "^4.0.11", "dexie": "^4.0.11",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"gpx": "file:../gpx", "gpx": "file:../gpx",
@@ -22,12 +23,12 @@
"mapillary-js": "^4.1.2", "mapillary-js": "^4.1.2",
"maplibre-gl": "^5.21.1", "maplibre-gl": "^5.21.1",
"sanitize-html": "^2.17.0", "sanitize-html": "^2.17.0",
"sortablejs": "^1.15.6" "sortablejs": "^1.15.6",
"tailwind-merge": "^3.3.0"
}, },
"devDependencies": { "devDependencies": {
"@fontsource-variable/inter": "^5.2.8",
"@internationalized/date": "^3.12.0", "@internationalized/date": "^3.12.0",
"@lucide/svelte": "^1.7.0", "@lucide/svelte": "^0.544.0",
"@sveltejs/adapter-static": "^3.0.8", "@sveltejs/adapter-static": "^3.0.8",
"@sveltejs/enhanced-img": "^0.6.0", "@sveltejs/enhanced-img": "^0.6.0",
"@sveltejs/kit": "^2.21.2", "@sveltejs/kit": "^2.21.2",
@@ -44,7 +45,6 @@
"@typescript-eslint/eslint-plugin": "^8.33.1", "@typescript-eslint/eslint-plugin": "^8.33.1",
"@typescript-eslint/parser": "^8.33.1", "@typescript-eslint/parser": "^8.33.1",
"bits-ui": "^2.17.2", "bits-ui": "^2.17.2",
"clsx": "^2.1.1",
"eslint": "^9.28.0", "eslint": "^9.28.0",
"eslint-config-prettier": "^10.1.5", "eslint-config-prettier": "^10.1.5",
"eslint-plugin-svelte": "^3.9.1", "eslint-plugin-svelte": "^3.9.1",
@@ -57,17 +57,15 @@
"postcss": "^8.4.47", "postcss": "^8.4.47",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"prettier-plugin-svelte": "^3.4.0", "prettier-plugin-svelte": "^3.4.0",
"shadcn-svelte": "^1.2.7",
"svelte": "^5.33.18", "svelte": "^5.33.18",
"svelte-check": "^4.0.0", "svelte-check": "^4.0.0",
"svelte-dnd-action": "^0.9.65", "svelte-dnd-action": "^0.9.65",
"svelte-sonner": "^1.1.0", "svelte-sonner": "^1.0.5",
"tailwind-merge": "^3.5.0", "tailwind-variants": "^3.1.1",
"tailwind-variants": "^3.2.2",
"tailwindcss": "^4.1.8", "tailwindcss": "^4.1.8",
"tslib": "^2.8.1", "tslib": "^2.8.1",
"tsx": "^4.19.1", "tsx": "^4.19.1",
"tw-animate-css": "^1.4.0", "tw-animate-css": "^1.3.4",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"vaul-svelte": "^1.0.0-next.7", "vaul-svelte": "^1.0.0-next.7",
"vite": "^6.3.5" "vite": "^6.3.5"
@@ -2569,16 +2567,6 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@fontsource-variable/inter": {
"version": "5.2.8",
"resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.8.tgz",
"integrity": "sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==",
"dev": true,
"license": "OFL-1.1",
"funding": {
"url": "https://github.com/sponsors/ayuhito"
}
},
"node_modules/@humanfs/core": { "node_modules/@humanfs/core": {
"version": "0.19.1", "version": "0.19.1",
"dev": true, "dev": true,
@@ -3226,9 +3214,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@lucide/svelte": { "node_modules/@lucide/svelte": {
"version": "1.7.0", "version": "0.544.0",
"resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-1.7.0.tgz", "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.544.0.tgz",
"integrity": "sha512-YytBKOUBGox7yWcykZnYxOkn5WpR5G1qYXLYXV/j1B79SOTTEKzB+s5yF5Rq9l9OkweDStNH2b4yTqfvhEhV8g==", "integrity": "sha512-9f9O6uxng2pLB01sxNySHduJN3HTl5p0HDu4H26VR51vhZfiMzyOMe9Mhof3XAk4l813eTtl+/DYRvGyoRR+yw==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"peerDependencies": { "peerDependencies": {
@@ -4738,9 +4726,6 @@
}, },
"node_modules/clsx": { "node_modules/clsx": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=6" "node": ">=6"
@@ -4766,16 +4751,6 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/commander": {
"version": "14.0.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
"integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20"
}
},
"node_modules/concat-map": { "node_modules/concat-map": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -6373,13 +6348,6 @@
"version": "0.2.2", "version": "0.2.2",
"license": "MIT" "license": "MIT"
}, },
"node_modules/node-fetch-native": {
"version": "1.6.7",
"resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz",
"integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==",
"dev": true,
"license": "MIT"
},
"node_modules/optionator": { "node_modules/optionator": {
"version": "0.9.4", "version": "0.9.4",
"dev": true, "dev": true,
@@ -6990,25 +6958,6 @@
"version": "1.0.5", "version": "1.0.5",
"license": "MIT" "license": "MIT"
}, },
"node_modules/shadcn-svelte": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/shadcn-svelte/-/shadcn-svelte-1.2.7.tgz",
"integrity": "sha512-mWuQk4H4gtV+J2wJQ7nEPKNnB/v86AALFryZU0SSM7ChHmJJMZ1kH+qIuxYKrXm9vOOOcSWHRsWzPDB71DnjYA==",
"dev": true,
"license": "MIT",
"dependencies": {
"commander": "^14.0.0",
"node-fetch-native": "^1.6.4",
"postcss": "^8.5.5",
"tailwind-merge": "^3.0.0"
},
"bin": {
"shadcn-svelte": "dist/index.mjs"
},
"peerDependencies": {
"svelte": "^5.0.0"
}
},
"node_modules/sharp": { "node_modules/sharp": {
"version": "0.34.5", "version": "0.34.5",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
@@ -7286,8 +7235,6 @@
}, },
"node_modules/svelte-sonner": { "node_modules/svelte-sonner": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/svelte-sonner/-/svelte-sonner-1.1.0.tgz",
"integrity": "sha512-3lYM6ZIqWe+p9vwwWHGWP/ZdvHiUtzURsud2quIxivrX4rvpXh6i+geBGn0m3JS6KwW6W8VgbOl3xQMcDuh6gg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -7338,9 +7285,6 @@
}, },
"node_modules/tailwind-merge": { "node_modules/tailwind-merge": {
"version": "3.5.0", "version": "3.5.0",
"resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz",
"integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==",
"dev": true,
"license": "MIT", "license": "MIT",
"funding": { "funding": {
"type": "github", "type": "github",
@@ -7349,8 +7293,6 @@
}, },
"node_modules/tailwind-variants": { "node_modules/tailwind-variants": {
"version": "3.2.2", "version": "3.2.2",
"resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz",
"integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@@ -7450,8 +7392,6 @@
}, },
"node_modules/tw-animate-css": { "node_modules/tw-animate-css": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz",
"integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"funding": { "funding": {

View File

@@ -14,9 +14,8 @@
"format": "prettier --write . --config ../.prettierrc --ignore-path ../.prettierignore --ignore-path ./.gitignore" "format": "prettier --write . --config ../.prettierrc --ignore-path ../.prettierignore --ignore-path ./.gitignore"
}, },
"devDependencies": { "devDependencies": {
"@fontsource-variable/inter": "^5.2.8",
"@internationalized/date": "^3.12.0", "@internationalized/date": "^3.12.0",
"@lucide/svelte": "^1.7.0", "@lucide/svelte": "^0.544.0",
"@sveltejs/adapter-static": "^3.0.8", "@sveltejs/adapter-static": "^3.0.8",
"@sveltejs/enhanced-img": "^0.6.0", "@sveltejs/enhanced-img": "^0.6.0",
"@sveltejs/kit": "^2.21.2", "@sveltejs/kit": "^2.21.2",
@@ -33,7 +32,6 @@
"@typescript-eslint/eslint-plugin": "^8.33.1", "@typescript-eslint/eslint-plugin": "^8.33.1",
"@typescript-eslint/parser": "^8.33.1", "@typescript-eslint/parser": "^8.33.1",
"bits-ui": "^2.17.2", "bits-ui": "^2.17.2",
"clsx": "^2.1.1",
"eslint": "^9.28.0", "eslint": "^9.28.0",
"eslint-config-prettier": "^10.1.5", "eslint-config-prettier": "^10.1.5",
"eslint-plugin-svelte": "^3.9.1", "eslint-plugin-svelte": "^3.9.1",
@@ -46,17 +44,15 @@
"postcss": "^8.4.47", "postcss": "^8.4.47",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"prettier-plugin-svelte": "^3.4.0", "prettier-plugin-svelte": "^3.4.0",
"shadcn-svelte": "^1.2.7",
"svelte": "^5.33.18", "svelte": "^5.33.18",
"svelte-check": "^4.0.0", "svelte-check": "^4.0.0",
"svelte-dnd-action": "^0.9.65", "svelte-dnd-action": "^0.9.65",
"svelte-sonner": "^1.1.0", "svelte-sonner": "^1.0.5",
"tailwind-merge": "^3.5.0", "tailwind-variants": "^3.1.1",
"tailwind-variants": "^3.2.2",
"tailwindcss": "^4.1.8", "tailwindcss": "^4.1.8",
"tslib": "^2.8.1", "tslib": "^2.8.1",
"tsx": "^4.19.1", "tsx": "^4.19.1",
"tw-animate-css": "^1.4.0", "tw-animate-css": "^1.3.4",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"vaul-svelte": "^1.0.0-next.7", "vaul-svelte": "^1.0.0-next.7",
"vite": "^6.3.5" "vite": "^6.3.5"
@@ -69,6 +65,7 @@
"@maplibre/maplibre-gl-geocoder": "^1.9.4", "@maplibre/maplibre-gl-geocoder": "^1.9.4",
"chart.js": "^4.5.1", "chart.js": "^4.5.1",
"chartjs-plugin-zoom": "^2.2.0", "chartjs-plugin-zoom": "^2.2.0",
"clsx": "^2.1.1",
"dexie": "^4.0.11", "dexie": "^4.0.11",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"gpx": "file:../gpx", "gpx": "file:../gpx",
@@ -77,6 +74,7 @@
"mapillary-js": "^4.1.2", "mapillary-js": "^4.1.2",
"maplibre-gl": "^5.21.1", "maplibre-gl": "^5.21.1",
"sanitize-html": "^2.17.0", "sanitize-html": "^2.17.0",
"sortablejs": "^1.15.6" "sortablejs": "^1.15.6",
"tailwind-merge": "^3.3.0"
} }
} }

View File

@@ -1,93 +1,76 @@
@import 'tailwindcss'; @import 'tailwindcss';
@import 'tw-animate-css'; @import 'tw-animate-css';
@import "shadcn-svelte/tailwind.css";
@import "@fontsource-variable/inter";
@custom-variant dark (&:is(.dark *)); @custom-variant dark (&:is(.dark *));
:root { :root {
--background: oklch(1 0 0); --background: hsl(0 0% 100%) /* <- Wrap in HSL */;
--foreground: oklch(0.145 0 0); --foreground: hsl(240 10% 3.9%);
--muted: oklch(0.97 0 0); --muted: hsl(240 4.8% 95.9%);
--muted-foreground: oklch(0.556 0 0); --muted-foreground: hsl(240 3.8% 46.1%);
--popover: oklch(1 0 0); --popover: hsl(0 0% 100%);
--popover-foreground: oklch(0.145 0 0); --popover-foreground: hsl(240 10% 3.9%);
--card: oklch(1 0 0); --card: hsl(0 0% 100%);
--card-foreground: oklch(0.145 0 0); --card-foreground: hsl(240 10% 3.9%);
--border: oklch(0.922 0 0); --border: hsl(240 5.9% 90%);
--input: oklch(0.922 0 0); --input: hsl(240 5.9% 90%);
--primary: oklch(0.205 0 0); --primary: hsl(240 5.9% 10%);
--primary-foreground: oklch(0.985 0 0); --primary-foreground: hsl(0 0% 98%);
--secondary: oklch(0.97 0 0); --secondary: hsl(240 4.8% 95.9%);
--secondary-foreground: oklch(0.205 0 0); --secondary-foreground: hsl(240 5.9% 10%);
--accent: oklch(0.97 0 0); --accent: hsl(240 4.8% 95.9%);
--accent-foreground: oklch(0.205 0 0); --accent-foreground: hsl(240 5.9% 10%);
--destructive: oklch(0.577 0.245 27.325); --destructive: hsl(0 72.2% 50.6%);
--destructive-foreground: hsl(0 0% 98%); --destructive-foreground: hsl(0 0% 98%);
--ring: oklch(0.708 0 0); --ring: hsl(240 10% 3.9%);
--sidebar: oklch(0.985 0 0); --sidebar: hsl(0 0% 98%);
--sidebar-foreground: oklch(0.145 0 0); --sidebar-foreground: hsl(240 5.3% 26.1%);
--sidebar-primary: oklch(0.205 0 0); --sidebar-primary: hsl(240 5.9% 10%);
--sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-primary-foreground: hsl(0 0% 98%);
--sidebar-accent: oklch(0.97 0 0); --sidebar-accent: hsl(240 4.8% 95.9%);
--sidebar-accent-foreground: oklch(0.205 0 0); --sidebar-accent-foreground: hsl(240 5.9% 10%);
--sidebar-border: oklch(0.922 0 0); --sidebar-border: hsl(220 13% 91%);
--sidebar-ring: oklch(0.708 0 0); --sidebar-ring: hsl(217.2 91.2% 59.8%);
--support: rgb(220 15 130); --support: rgb(220 15 130);
--link: rgb(0 110 180); --link: rgb(0 110 180);
--selection: hsl(240 4.8% 93%); --selection: hsl(240 4.8% 93%);
--radius: 0.5rem; --radius: 0.5rem;
--chart-1: oklch(0.87 0 0);
--chart-2: oklch(0.556 0 0);
--chart-3: oklch(0.439 0 0);
--chart-4: oklch(0.371 0 0);
--chart-5: oklch(0.269 0 0);
} }
.dark { .dark {
--background: oklch(0.145 0 0); --background: hsl(240 10% 3.9%);
--foreground: oklch(0.985 0 0); --foreground: hsl(0 0% 98%);
--muted: oklch(0.269 0 0); --muted: hsl(240 3.7% 15.9%);
--muted-foreground: oklch(0.708 0 0); --muted-foreground: hsl(240 5% 64.9%);
--popover: oklch(0.205 0 0); --popover: hsl(240 10% 3.9%);
--popover-foreground: oklch(0.985 0 0); --popover-foreground: hsl(0 0% 98%);
--card: oklch(0.205 0 0); --card: hsl(240 10% 3.9%);
--card-foreground: oklch(0.985 0 0); --card-foreground: hsl(0 0% 98%);
--border: oklch(1 0 0 / 10%); --border: hsl(240 3.7% 15.9%);
--input: oklch(1 0 0 / 15%); --input: hsl(240 3.7% 15.9%);
--primary: oklch(0.922 0 0); --primary: hsl(0 0% 98%);
--primary-foreground: oklch(0.205 0 0); --primary-foreground: hsl(240 5.9% 10%);
--secondary: oklch(0.269 0 0); --secondary: hsl(240 3.7% 15.9%);
--secondary-foreground: oklch(0.985 0 0); --secondary-foreground: hsl(0 0% 98%);
--accent: oklch(0.269 0 0); --accent: hsl(240 3.7% 15.9%);
--accent-foreground: oklch(0.985 0 0); --accent-foreground: hsl(0 0% 98%);
--destructive: oklch(0.704 0.191 22.216); --destructive: hsl(0 62.8% 30.6%);
--destructive-foreground: hsl(0 0% 98%); --destructive-foreground: hsl(0 0% 98%);
--ring: oklch(0.556 0 0); --ring: hsl(240 4.9% 83.9%);
--sidebar: oklch(0.205 0 0); --sidebar: hsl(240 5.9% 10%);
--sidebar-foreground: oklch(0.985 0 0); --sidebar-foreground: hsl(240 4.8% 95.9%);
--sidebar-primary: oklch(0.488 0.243 264.376); --sidebar-primary: hsl(224.3 76.3% 48%);
--sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-primary-foreground: hsl(0 0% 100%);
--sidebar-accent: oklch(0.269 0 0); --sidebar-accent: hsl(240 3.7% 15.9%);
--sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-accent-foreground: hsl(240 4.8% 95.9%);
--sidebar-border: oklch(1 0 0 / 10%); --sidebar-border: hsl(240 3.7% 15.9%);
--sidebar-ring: oklch(0.556 0 0); --sidebar-ring: hsl(217.2 91.2% 59.8%);
--support: rgb(255 110 190); --support: rgb(255 110 190);
--link: rgb(80 190 255); --link: rgb(80 190 255);
--selection: hsl(240 3.7% 22%); --selection: hsl(240 3.7% 22%);
--chart-1: oklch(0.87 0 0);
--chart-2: oklch(0.556 0 0);
--chart-3: oklch(0.439 0 0);
--chart-4: oklch(0.371 0 0);
--chart-5: oklch(0.269 0 0);
} }
@theme inline { @theme inline {
@@ -130,35 +113,14 @@
--color-link: var(--link); --color-link: var(--link);
--breakpoint-xs: 540px; --breakpoint-xs: 540px;
--font-sans: 'Inter Variable', sans-serif;
--color-chart-5: var(--chart-5);
--color-chart-4: var(--chart-4);
--color-chart-3: var(--chart-3);
--color-chart-2: var(--chart-2);
--color-chart-1: var(--chart-1);
--radius-2xl: calc(var(--radius) * 1.8);
--radius-3xl: calc(var(--radius) * 2.2);
--radius-4xl: calc(var(--radius) * 2.6);
} }
@layer base { @layer base {
* { * {
@apply border-border outline-ring/50; @apply border-border;
} }
body { body {
@apply bg-background text-foreground; @apply bg-background text-foreground;
} }
html {
@apply font-sans;
}
} }

View File

@@ -35,28 +35,6 @@ export const basemaps: { [key: string]: string | StyleSpecification } = {
maptilerTopo: `https://api.maptiler.com/maps/topo-v4/style.json?key=${maptilerKeyPlaceHolder}`, maptilerTopo: `https://api.maptiler.com/maps/topo-v4/style.json?key=${maptilerKeyPlaceHolder}`,
maptilerOutdoors: `https://api.maptiler.com/maps/outdoor-v4/style.json?key=${maptilerKeyPlaceHolder}`, maptilerOutdoors: `https://api.maptiler.com/maps/outdoor-v4/style.json?key=${maptilerKeyPlaceHolder}`,
maptilerSatellite: `https://api.maptiler.com/maps/hybrid-v4/style.json?key=${maptilerKeyPlaceHolder}`, maptilerSatellite: `https://api.maptiler.com/maps/hybrid-v4/style.json?key=${maptilerKeyPlaceHolder}`,
esriSatellite: {
version: 8,
sources: {
esriSatellite: {
type: 'raster',
tiles: [
'https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/WMTS/tile/1.0.0/World_Imagery/default/default028mm/{z}/{y}/{x}.jpg',
],
tileSize: 256,
maxzoom: 19,
attribution:
'© <a href="https://www.esri.com/" target="_blank">Esri</a>, Vantor, Earthstar Geographics, and the GIS User Community',
},
},
layers: [
{
id: 'esriSatellite',
type: 'raster',
source: 'esriSatellite',
},
],
},
openStreetMap: { openStreetMap: {
version: 8, version: 8,
sources: { sources: {
@@ -803,7 +781,6 @@ export const basemapTree: LayerTreeType = {
maptilerTopo: true, maptilerTopo: true,
maptilerOutdoors: true, maptilerOutdoors: true,
maptilerSatellite: true, maptilerSatellite: true,
esriSatellite: true,
openStreetMap: true, openStreetMap: true,
openTopoMap: true, openTopoMap: true,
openHikingMap: true, openHikingMap: true,
@@ -1029,7 +1006,6 @@ export const defaultBasemapTree: LayerTreeType = {
maptilerTopo: true, maptilerTopo: true,
maptilerOutdoors: true, maptilerOutdoors: true,
maptilerSatellite: true, maptilerSatellite: true,
esriSatellite: false,
openStreetMap: true, openStreetMap: true,
openTopoMap: true, openTopoMap: true,
openHikingMap: true, openHikingMap: true,

View File

@@ -14,12 +14,12 @@
} = $props(); } = $props();
</script> </script>
<div class="text-[13px] bg-secondary rounded border flex flex-row items-center p-2 {className}"> <div class="text-sm bg-secondary rounded border flex flex-row items-center p-2 {className}">
<CircleQuestionMark size="16" class="w-4 mr-2 shrink-0 grow-0" /> <CircleQuestionMark size="16" class="w-4 mr-2 shrink-0 grow-0" />
<div> <div>
{@render children()} {@render children()}
{#if link} {#if link}
<a href={link} target="_blank" class="text-[13px] text-link hover:underline"> <a href={link} target="_blank" class="text-sm text-link hover:underline">
{i18n._('menu.more')} {i18n._('menu.more')}
</a> </a>
{/if} {/if}

View File

@@ -43,8 +43,6 @@
BookOpenText, BookOpenText,
ChartArea, ChartArea,
Maximize, Maximize,
Maximize2,
Minimize2,
} from '@lucide/svelte'; } from '@lucide/svelte';
import { map } from '$lib/components/map/map'; import { map } from '$lib/components/map/map';
import { editMetadata } from '$lib/components/file-list/metadata/utils.svelte'; import { editMetadata } from '$lib/components/file-list/metadata/utils.svelte';
@@ -72,7 +70,7 @@
import { copied, selection } from '$lib/logic/selection'; import { copied, selection } from '$lib/logic/selection';
import { allHidden } from '$lib/logic/hidden'; import { allHidden } from '$lib/logic/hidden';
import { boundsManager } from '$lib/logic/bounds'; import { boundsManager } from '$lib/logic/bounds';
import { tick, onMount } from 'svelte'; import { tick } from 'svelte';
import { allowedPastes } from '$lib/components/file-list/sortable-file-list'; import { allowedPastes } from '$lib/components/file-list/sortable-file-list';
const { const {
@@ -107,23 +105,6 @@
} }
let layerSettingsOpen = $state(false); 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> </script>
<div class="absolute md:top-2 left-0 right-0 z-20 flex flex-row justify-center pointer-events-none"> <div class="absolute md:top-2 left-0 right-0 z-20 flex flex-row justify-center pointer-events-none">
@@ -396,16 +377,6 @@
{i18n._('menu.toggle_3d')} {i18n._('menu.toggle_3d')}
<Shortcut key={i18n._('menu.right_click_drag')} /> <Shortcut key={i18n._('menu.right_click_drag')} />
</Menubar.Item> </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.Content>
</Menubar.Menu> </Menubar.Menu>
<Menubar.Menu> <Menubar.Menu>

View File

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

View File

@@ -81,13 +81,8 @@ export class StyleManager {
let basemap = get(currentBasemap); let basemap = get(currentBasemap);
const basemapInfo = basemaps[basemap] ?? custom[basemap]?.value ?? basemaps[defaultBasemap]; 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); this.merge(style, basemapStyle);
if (this._maptilerKey !== '') { if (this._maptilerKey !== '') {
@@ -114,52 +109,45 @@ export class StyleManager {
if (!layers[overlay]) { if (!layers[overlay]) {
if (this._pastOverlays.has(overlay)) { if (this._pastOverlays.has(overlay)) {
const overlayInfo = custom[overlay]?.value ?? overlays[overlay]; const overlayInfo = custom[overlay]?.value ?? overlays[overlay];
try { const overlayStyle = await this.get(overlayInfo);
const overlayStyle = await this.get(overlayInfo); for (let layer of overlayStyle.layers ?? []) {
for (let layer of overlayStyle.layers ?? []) { if (map_.getLayer(layer.id)) {
if (map_.getLayer(layer.id)) { map_.removeLayer(layer.id);
map_.removeLayer(layer.id);
}
} }
} catch (e) {
// Should not happen
} }
this._pastOverlays.delete(overlay); this._pastOverlays.delete(overlay);
} }
} else { } else {
const overlayInfo = custom[overlay]?.value ?? overlays[overlay]; const overlayInfo = custom[overlay]?.value ?? overlays[overlay];
try { const overlayStyle = await this.get(overlayInfo);
const overlayStyle = await this.get(overlayInfo); const opacity = overlayOpacities[overlay];
const opacity = overlayOpacities[overlay];
for (let sourceId in overlayStyle.sources) { for (let sourceId in overlayStyle.sources) {
if (!map_.getSource(sourceId)) { if (!map_.getSource(sourceId)) {
map_.addSource(sourceId, overlayStyle.sources[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;
}
}
map_.addLayer(layer, ANCHOR_LAYER_KEY.overlays);
}
}
this._pastOverlays.add(overlay);
} catch (e) {
console.error(e.message);
} }
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) {} } catch (e) {}
@@ -193,9 +181,6 @@ export class StyleManager {
styleUrl = styleUrl.replace(maptilerKeyPlaceHolder, this._maptilerKey); styleUrl = styleUrl.replace(maptilerKeyPlaceHolder, this._maptilerKey);
} }
const response = await fetch(styleUrl, { cache: 'force-cache' }); 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(); const style = await response.json();
return style; return style;
} else { } else {

View File

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

View File

@@ -31,13 +31,13 @@ get along, so we shut typescript up by casting `value` to `never`.
data-slot="slider-track" data-slot="slider-track"
data-orientation={orientation} data-orientation={orientation}
class={cn( class={cn(
"bg-muted rounded-full data-horizontal:h-1.5 data-horizontal:w-full data-vertical:h-full data-vertical:w-1 bg-muted relative grow overflow-hidden data-horizontal:w-full data-vertical:h-full" "h-1.5 bg-muted rounded-full data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1 bg-muted relative grow overflow-hidden data-horizontal:w-full data-vertical:h-full"
)} )}
> >
<SliderPrimitive.Range <SliderPrimitive.Range
data-slot="slider-range" data-slot="slider-range"
class={cn( class={cn(
"bg-primary absolute select-none data-horizontal:h-full data-vertical:w-full" "h-full bg-black absolute select-none data-horizontal:h-full data-vertical:w-full"
)} )}
/> />
</span> </span>

View File

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ Enter or exit the 3D map view.
Каб кіраваць арыентацыяй і нахілам карты, вы таксама можаце перацягнуць карту, утрымліваючы <kbd>Ctrl</kbd>. Каб кіраваць арыентацыяй і нахілам карты, вы таксама можаце перацягнуць карту, утрымліваючы <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

@@ -3,7 +3,7 @@ title: Opcions de vista
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. Per controlar l'orientació i inclinació del mapa, pots arrossegar el mapa mentre prems <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

@@ -3,7 +3,7 @@ title: Možnosti zobrazení
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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> </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"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: Anzeigeoptionen
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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. 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> </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"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -46,9 +46,4 @@ 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>. 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: Todo lo que necesita es:
1. Archivos GPX alojados en su servidor o en Google Drive, o accesibles a través de una URL pública; 1. GPX files hosted on your server or on Google Drive, or accessible via a public URL;
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. 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.
Luego puede jugar con el configurador de abajo para personalizar su mapa y generar el código HTML correspondiente. 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. En estos ajustes, también puede administrar la opacidad de las capas superpuestas.
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>. 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.

View File

@@ -3,7 +3,7 @@ title: Opciones de vista
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. Para controlar la orientación e inclinación del mapa, puede arrastrarlo mientras mantiene pulsada la tecla <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

@@ -10,7 +10,7 @@ title: Desnivel
# <MountainSnow size="24" class="inline-block" style="margin-bottom: 5px" /> { title } # <MountainSnow size="24" class="inline-block" style="margin-bottom: 5px" /> { title }
Esta herramienta permite añadir datos de elevación a los rastros y [puntos de interés](../gpx), o reemplazar los datos existentes. Le permite añadir datos de desnivel a trazas y [puntos de interés](../gpx), o reemplazar los datos existentes.
<div class="flex flex-row justify-center"> <div class="flex flex-row justify-center">
<Elevation class="text-foreground p-3 border rounded-md shadow-lg" /> <Elevation class="text-foreground p-3 border rounded-md shadow-lg" />
@@ -18,7 +18,7 @@ Esta herramienta permite añadir datos de elevación a los rastros y [puntos de
<DocsNote> <DocsNote>
Los datos de notificación son proporcionados por <a href="https://maptiler.com" target="_blank">MapTiler</a>. Elevation data is provided by <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>. 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>.
</DocsNote> </DocsNote>

View File

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

View File

@@ -3,7 +3,7 @@ title: Ikusteko aukerak
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ Aktibatu edo desaktibatu maparen 3D ikuspegia.
Maparen orientazioa eta okertzea kontrolatzeko, mapa ere arrasta dezakezu <kbd> Ctrl</kbd> sakatzen duzun bitartean. Maparen orientazioa eta okertzea kontrolatzeko, mapa ere arrasta dezakezu <kbd> Ctrl</kbd> sakatzen duzun bitartean.
</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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: Options d'affichage
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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> </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"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: Nézet beállításai
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: Opzioni di visualizzazione
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. Per controllare l'orientamento e l'inclinazione della mappa, puoi anche trascinare la mappa tenendo premuto <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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: Bekijk opties
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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. 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> </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"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: Akcje menu Widok
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. Aby kontrolować orientację i pochylenie mapy, możesz również przeciągnąć mapę przytrzymując <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

@@ -3,7 +3,7 @@ title: Ver opções
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. Para controlar a orientação e a inclinação do mapa, você também pode arrastar o mapa enquanto segura <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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ Enter or exit the 3D map view.
Чтобы управлять ориентацией и наклоном карты, вы также можете перетаскивать карту, удерживая <kbd>Ctrl</kbd>. Чтобы управлять ориентацией и наклоном карты, вы также можете перетаскивать карту, удерживая <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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: Görünüm seçenekleri
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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. Haritanın oryantasyonunu ve eğimini <kbd>Ctrl</kbd> basılı tutarken sürükleyerek de yapabilirsiniz.
</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

@@ -1,5 +1,5 @@
--- ---
title: Файли та статистика title: Files and statistics
--- ---
<script lang="ts"> <script lang="ts">
@@ -19,41 +19,41 @@ title: Файли та статистика
# { title } # { title }
## Список файлів ## File list
Після того як ви [відкриєте](./menu/file) файли, вони будуть показуватися у вигляді вкладок у списку файлів, розташованому внизу карти. Once you have [opened](./menu/file) files, they will be shown as tabs in the file list located at the bottom of the map.
Ви можете змінити їх порядок, перетягуючи вкладки. You can reorder them by dragging and dropping the tabs.
А коли відкрито багато файлів, ви можете прокручувати список вкладок, щоб переходити між ними. And when many files are open, you can scroll through the list of tabs to navigate between them.
<DocsNote> <DocsNote>
Під час роботи з мишею для горизонтальної прокрутки потрібно утримувати клавіші <kbd>Shift</kbd>. When using a mouse, you need to hold <kbd>Shift</kbd> to scroll horizontally.
</DocsNote> </DocsNote>
### Вибір файлу ### File selection
Натиснувши на вкладку, ви можете перемикатися між файлами, щоб переглянути їхні статистичні дані, а також застосовувати до них [дії редагування](./menu/edit) та [інструменти](./toolbar). By clicking on a tab, you can switch between the files to inspect their statistics, and apply [edit actions](./menu/edit) and [tools](./toolbar) to them.
Утримуючи клавішу <kbd>Ctrl/Cmd</kbd>, ви можете додавати файли до виділення або видаляти їх, а утримуючи клавішу <kbd>Shift</kbd>, ви можете виділити діапазон файлів. By holding the <kbd>Ctrl/Cmd</kbd> key, you can add files to the selection or remove them, and by holding <kbd>Shift</kbd>, you can select a range of files.
Більшість [операцій редагування](./menu/edit) та [інструментів](./toolbar) можна застосовувати одразу до декількох файлів. Most of the [edit actions](./menu/edit) and [tools](./toolbar) can be applied to multiple files at once.
<DocsNote> <DocsNote>
Ви також можете переходити між файлами за допомогою клавіш зі стрілками на клавіатурі, а також натискати <kbd>Shift</kbd>, щоб додати файли до виділення. You can also navigate through the files using the arrow keys on your keyboard, and use <kbd>Shift</kbd> to add files to the selection.
</DocsNote> </DocsNote>
### Редагувати дії ### Edit actions
Клацнувши правою кнопкою миші на вкладці файлу, ви отримаєте доступ до тих самих дій, що й у [меню редагування](./menu/edit). By right-clicking on a file tab, you can access the same actions as in the [edit menu](./menu/edit).
### Структура дерева ### Tree layout
Як зазначено в [розділі налаштувань перегляду](./menu/view), ви можете перейти до деревоподібного показу списку файлів. As mentioned in the [view options section](./menu/view), you can switch to a tree layout for the files list.
Ця схема ідеально підходить для роботи з великою кількістю відкритих файлів, оскільки вони розміщуються у вигляді вертикального списку в правій частині екрана. This layout is ideal for managing a large number of open files, as it organizes them into a vertical list on the right side of the map.
Крім того, у дереві файлів можна переглядати [треки, сегменти та цікаві місця](./gpx), що містяться у файлах, за допомогою розгортальних розділів. In addition, the file tree view enables you to inspect the [tracks, segments, and points of interest](./gpx) contained inside the files through collapsible sections.
Ви також можете застосовувати [дії редагування](./menu/edit) та [інструменти](./toolbar) до елементів внутрішніх файлів. You can also apply [edit actions](./menu/edit) and [tools](./toolbar) to internal file items.
Furthermore, you can drag and drop the inner items to reorder them, or move them in the hierarchy or even to another file. Furthermore, you can drag and drop the inner items to reorder them, or move them in the hierarchy or even to another file.
<DocsNote> <DocsNote>

View File

@@ -21,7 +21,7 @@ Before we dive into the details of each section, let's have a quick overview of
At the top of the interface, you will find the [main menu](./menu). At the top of the interface, you will find the [main menu](./menu).
This is where you can access common actions such as opening, closing, and exporting files, undoing and redoing actions, and adjusting the application settings. This is where you can access common actions such as opening, closing, and exporting files, undoing and redoing actions, and adjusting the application settings.
## Файли та статистика ## Files and statistics
At the bottom of the interface, you will find the list of files currently open in the application. At the bottom of the interface, you will find the list of files currently open in the application.
You can click on a file to select it and display its statistics below the list. You can click on a file to select it and display its statistics below the list.

View File

@@ -1,5 +1,5 @@
--- ---
title: Редагувати дії title: Edit actions
--- ---
<script lang="ts"> <script lang="ts">

View File

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -18,7 +18,7 @@ Hide the elevation profile to make room for the map, or show it to inspect the c
### <ListTree size="16" class="inline-block" style="margin-bottom: 2px" /> File tree ### <ListTree size="16" class="inline-block" style="margin-bottom: 2px" /> File tree
Toggle the tree layout for the [file list](../files-and-stats). Toggle the tree layout for the [file list](../files-and-stats).
Ця схема ідеально підходить для роботи з великою кількістю відкритих файлів, оскільки вони розміщуються у вигляді вертикального списку в правій частині екрана. This layout is ideal for managing a large number of open files, as it organizes them into a vertical list on the right side of the map.
In addition, the file tree view enables you to inspect the [tracks, segments, and points of interest](../gpx) contained inside the files through collapsible sections. In addition, the file tree view enables you to inspect the [tracks, segments, and points of interest](../gpx) contained inside the files through collapsible sections.
### <Map size="16" class="inline-block" style="margin-bottom: 2px" /> Switch to previous basemap ### <Map size="16" class="inline-block" style="margin-bottom: 2px" /> Switch to previous basemap
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: View options
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ 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>. 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

@@ -3,7 +3,7 @@ title: 显示
--- ---
<script lang="ts"> <script lang="ts">
import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box, Maximize2 } from '@lucide/svelte'; import { ChartArea, ListTree, Map, Layers2, Coins, Milestone, Box } from '@lucide/svelte';
import DocsNote from '$lib/components/docs/DocsNote.svelte'; import DocsNote from '$lib/components/docs/DocsNote.svelte';
</script> </script>
@@ -47,8 +47,3 @@ title: 显示
也可在按住 <kbd>Ctrl</kbd> 的同时用鼠标拖拽地图实现此功能。 也可在按住 <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

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

View File

@@ -1,4 +1,4 @@
import { clsx, type ClassValue } from 'clsx'; import { type ClassValue, clsx } from 'clsx';
import { twMerge } from 'tailwind-merge'; import { twMerge } from 'tailwind-merge';
import { base } from '$app/paths'; import { base } from '$app/paths';
import { languages } from '$lib/languages'; import { languages } from '$lib/languages';
@@ -18,7 +18,9 @@ export type WithoutChild<T> = T extends { child?: any } ? Omit<T, 'child'> : T;
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
export type WithoutChildren<T> = T extends { children?: any } ? Omit<T, 'children'> : T; export type WithoutChildren<T> = T extends { children?: any } ? Omit<T, 'children'> : T;
export type WithoutChildrenOrChild<T> = WithoutChildren<WithoutChild<T>>; export type WithoutChildrenOrChild<T> = WithoutChildren<WithoutChild<T>>;
export type WithElementRef<T, U extends HTMLElement = HTMLElement> = T & { ref?: U | null }; export type WithElementRef<T, U extends HTMLElement = HTMLElement> = T & {
ref?: U | null;
};
export function getClosestLinePoint( export function getClosestLinePoint(
points: TrackPoint[], points: TrackPoint[],

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Switch to previous basemap", "switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays", "toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D", "toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Налады", "settings": "Налады",
"distance_units": "Адзінкі вымярэння адлегласці", "distance_units": "Адзінкі вымярэння адлегласці",
"metric": "Метрычная", "metric": "Метрычная",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Canviar al mapa base anterior", "switch_basemap": "Canviar al mapa base anterior",
"toggle_overlays": "Intercanvia capes", "toggle_overlays": "Intercanvia capes",
"toggle_3d": "Canvia a 3D", "toggle_3d": "Canvia a 3D",
"fullscreen": "Full screen",
"settings": "Configuració", "settings": "Configuració",
"distance_units": "Unitats de distancia", "distance_units": "Unitats de distancia",
"metric": "Mètric", "metric": "Mètric",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Přepnout na předchozí podkladovou mapu", "switch_basemap": "Přepnout na předchozí podkladovou mapu",
"toggle_overlays": "Přepnout překryv", "toggle_overlays": "Přepnout překryv",
"toggle_3d": "Přepnout 3D", "toggle_3d": "Přepnout 3D",
"fullscreen": "Full screen",
"settings": "Nastavení", "settings": "Nastavení",
"distance_units": "Jednotky vzdálenosti", "distance_units": "Jednotky vzdálenosti",
"metric": "Metrické", "metric": "Metrické",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Switch to previous basemap", "switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays", "toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D", "toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings", "settings": "Settings",
"distance_units": "Distance units", "distance_units": "Distance units",
"metric": "Metric", "metric": "Metric",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Zur vorherigen Basemap wechseln", "switch_basemap": "Zur vorherigen Basemap wechseln",
"toggle_overlays": "Overlay umschalten", "toggle_overlays": "Overlay umschalten",
"toggle_3d": "3D umschalten", "toggle_3d": "3D umschalten",
"fullscreen": "Full screen",
"settings": "Einstellungen", "settings": "Einstellungen",
"distance_units": "Entfernungseinheiten", "distance_units": "Entfernungseinheiten",
"metric": "Metrisch", "metric": "Metrisch",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Switch to previous basemap", "switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays", "toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D", "toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings", "settings": "Settings",
"distance_units": "Μονάδες απόστασης", "distance_units": "Μονάδες απόστασης",
"metric": "Μονάδες Μέτρησης", "metric": "Μονάδες Μέτρησης",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Switch to previous basemap", "switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays", "toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D", "toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings", "settings": "Settings",
"distance_units": "Distance units", "distance_units": "Distance units",
"metric": "Metric", "metric": "Metric",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -2,10 +2,10 @@
"metadata": { "metadata": {
"home_title": "el editor online de archivos GPX", "home_title": "el editor online de archivos GPX",
"app_title": "app", "app_title": "app",
"embed_title": "Editor online de archivos GPX", "embed_title": " editor online de archivos GPX",
"help_title": "ayuda", "help_title": "ayuda",
"404_title": "página no encontrada", "404_title": "página no encontrada",
"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." "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."
}, },
"menu": { "menu": {
"new": "Nuevo", "new": "Nuevo",
@@ -36,7 +36,6 @@
"switch_basemap": "Cambiar al mapa base anterior", "switch_basemap": "Cambiar al mapa base anterior",
"toggle_overlays": "Alternar capas", "toggle_overlays": "Alternar capas",
"toggle_3d": "Alternar 3D", "toggle_3d": "Alternar 3D",
"fullscreen": "Full screen",
"settings": "Configuración", "settings": "Configuración",
"distance_units": "Unidades de distancia", "distance_units": "Unidades de distancia",
"metric": "Métrico", "metric": "Métrico",
@@ -235,7 +234,7 @@
}, },
"elevation": { "elevation": {
"button": "Solicitar datos de desnivel", "button": "Solicitar datos de desnivel",
"help": "La solicitud de datos de desnivel borrará los datos de desnivel existentes, si los hay, y los reemplazará con datos de Mapbox.", "help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help_no_selection": "Seleccione un elemento del archivo para solicitar datos de desnivel." "help_no_selection": "Seleccione un elemento del archivo para solicitar datos de desnivel."
}, },
"waypoint": { "waypoint": {
@@ -277,7 +276,7 @@
"new": "Nueva capa personalizada", "new": "Nueva capa personalizada",
"edit": "Editar capa personalizada", "edit": "Editar capa personalizada",
"urls": "URL(s)", "urls": "URL(s)",
"url_placeholder": "WMTS, WMS o JSON estilo Mapbox", "url_placeholder": "WMTS, WMS or MapLibre style JSON",
"max_zoom": "Zoom máximo", "max_zoom": "Zoom máximo",
"layer_type": "Tipo de capa", "layer_type": "Tipo de capa",
"basemap": "Mapa base", "basemap": "Mapa base",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",
@@ -495,7 +493,7 @@
"email": "Email", "email": "Email",
"contribute": "Contribuir", "contribute": "Contribuir",
"supported_by": "con el apoyo de", "supported_by": "con el apoyo de",
"features": "Características", "features": "Features",
"route_planning": "Planificación de ruta", "route_planning": "Planificación de ruta",
"route_planning_description": "Una interfaz intuitiva para crear itinerarios adaptados a cada deporte, basada en datos de OpenStreetMap.", "route_planning_description": "Una interfaz intuitiva para crear itinerarios adaptados a cada deporte, basada en datos de OpenStreetMap.",
"file_processing": "Procesamiento avanzado de archivo", "file_processing": "Procesamiento avanzado de archivo",
@@ -504,15 +502,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.", "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": "Visualización de datos",
"data_visualization_description": "Un perfil de elevación interactivo con estadísticas detalladas para analizar actividades registradas y futuros objetivos.", "data_visualization_description": "Un perfil de elevación interactivo con estadísticas detalladas para analizar actividades registradas y futuros objetivos.",
"philosophy": "Filosofía", "philosophy": "Philosophy",
"foss": "Gratis, sin anuncios y código abierto", "foss": "Free, ad-free and open source",
"foss_description": "El sitio web es de uso gratuito, sin anuncios, y el código fuente está disponible públicamente en GitHub.", "foss_description": "The website is free to use, without ads, and the source code is publicly available on GitHub.",
"privacy": "Respetuosa con la privacidad", "privacy": "Privacy-friendly",
"privacy_description": "Tus archivos GPX nunca abandonan tu navegador. Sin seguimiento, sin recopilación de datos.", "privacy_description": "Tus archivos GPX nunca abandonan tu navegador. Sin seguimiento, sin recopilación de datos.",
"community": "Posible gracias a la comunidad", "community": "Made possible by the community",
"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.", "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", "support_button": "Apoya a gpx.studio en Open Collective",
"translate_button": "Ayuda a traducir el sitio web en Crowdin" "translate_button": "Help translate the website on Crowdin"
}, },
"docs": { "docs": {
"translate": "Mejorar la traducción en Crowdin", "translate": "Mejorar la traducción en Crowdin",
@@ -537,7 +535,7 @@
}, },
"embedding": { "embedding": {
"title": "Crear su propio mapa", "title": "Crear su propio mapa",
"maptiler_key": "Clave MapTiler (opcional, sólo se requiere para mapas MapTiler)", "maptiler_key": "MapTiler key (optional, only required for MapTiler maps)",
"file_urls": "URLs de archivo (separados por comas)", "file_urls": "URLs de archivo (separados por comas)",
"drive_ids": "IDs de archivo de Google Drive (separados por comas)", "drive_ids": "IDs de archivo de Google Drive (separados por comas)",
"basemap": "Mapa base", "basemap": "Mapa base",

View File

@@ -4,7 +4,7 @@
"app_title": "aplikazioa", "app_title": "aplikazioa",
"embed_title": "lineako GPX fitxategi editorea", "embed_title": "lineako GPX fitxategi editorea",
"help_title": "laguntza", "help_title": "laguntza",
"404_title": "ez da orrialdea aurkitu", "404_title": "Ez da orrialdea aurkitu",
"description": "Ikusi, editatu eta sortu GPX fitxategiak bideak bilatzeko aukera aurreratuarekin eta fitxategiak prozesatzeko tresnekin, mapa ederrekin eta datuak ikusteko xehetasun handiarekin." "description": "Ikusi, editatu eta sortu GPX fitxategiak bideak bilatzeko aukera aurreratuarekin eta fitxategiak prozesatzeko tresnekin, mapa ederrekin eta datuak ikusteko xehetasun handiarekin."
}, },
"menu": { "menu": {
@@ -36,7 +36,6 @@
"switch_basemap": "Aldatu aurreko mapa erabiltzera", "switch_basemap": "Aldatu aurreko mapa erabiltzera",
"toggle_overlays": "Txandakatu geruzak", "toggle_overlays": "Txandakatu geruzak",
"toggle_3d": "Txandakatu 3D", "toggle_3d": "Txandakatu 3D",
"fullscreen": "Full screen",
"settings": "Ezarpenak", "settings": "Ezarpenak",
"distance_units": "Distantzia unitateak", "distance_units": "Distantzia unitateak",
"metric": "Metrikoa", "metric": "Metrikoa",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Vaihda edelliseen taustakarttaan", "switch_basemap": "Vaihda edelliseen taustakarttaan",
"toggle_overlays": "Peiteaineistot päälle/pois", "toggle_overlays": "Peiteaineistot päälle/pois",
"toggle_3d": "3D päälle/pois", "toggle_3d": "3D päälle/pois",
"fullscreen": "Full screen",
"settings": "Asetukset", "settings": "Asetukset",
"distance_units": "Mittayksikkö", "distance_units": "Mittayksikkö",
"metric": "Metri", "metric": "Metri",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Basculer au fond de carte précédent", "switch_basemap": "Basculer au fond de carte précédent",
"toggle_overlays": "Afficher/cacher les surcouches", "toggle_overlays": "Afficher/cacher les surcouches",
"toggle_3d": "Activer/désactiver la 3D", "toggle_3d": "Activer/désactiver la 3D",
"fullscreen": "Plein écran",
"settings": "Réglages", "settings": "Réglages",
"distance_units": "Unités de distance", "distance_units": "Unités de distance",
"metric": "Métrique", "metric": "Métrique",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Switch to previous basemap", "switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays", "toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D", "toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "הגדרות", "settings": "הגדרות",
"distance_units": "יחידות מרחק", "distance_units": "יחידות מרחק",
"metric": "מטרי", "metric": "מטרי",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Váltás az előző alaptérképre", "switch_basemap": "Váltás az előző alaptérképre",
"toggle_overlays": "Átfedés váltása", "toggle_overlays": "Átfedés váltása",
"toggle_3d": "3D nézet bekapcsolása", "toggle_3d": "3D nézet bekapcsolása",
"fullscreen": "Full screen",
"settings": "Beállítások", "settings": "Beállítások",
"distance_units": "Távolságmérés mértékegységei", "distance_units": "Távolságmérés mértékegységei",
"metric": "Metrikus", "metric": "Metrikus",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "Túraútvonal jelzések", "openHikingMap": "Túraútvonal jelzések",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Beralih ke peta dasar sebelumnya", "switch_basemap": "Beralih ke peta dasar sebelumnya",
"toggle_overlays": "Beralih lapisan", "toggle_overlays": "Beralih lapisan",
"toggle_3d": "Beralih 3D", "toggle_3d": "Beralih 3D",
"fullscreen": "Full screen",
"settings": "Pengaturan", "settings": "Pengaturan",
"distance_units": "Satuan jarak", "distance_units": "Satuan jarak",
"metric": "Metrik", "metric": "Metrik",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Passa alla mappa di base precedente", "switch_basemap": "Passa alla mappa di base precedente",
"toggle_overlays": "Attiva / disattiva le sovrapposizioni", "toggle_overlays": "Attiva / disattiva le sovrapposizioni",
"toggle_3d": "Attiva / disattiva 3D", "toggle_3d": "Attiva / disattiva 3D",
"fullscreen": "Full screen",
"settings": "Impostazioni", "settings": "Impostazioni",
"distance_units": "Unità distanza", "distance_units": "Unità distanza",
"metric": "Metrico", "metric": "Metrico",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "이전 배경 지도로 전환", "switch_basemap": "이전 배경 지도로 전환",
"toggle_overlays": "오버레이 전환", "toggle_overlays": "오버레이 전환",
"toggle_3d": "3D 전환", "toggle_3d": "3D 전환",
"fullscreen": "Full screen",
"settings": "설정", "settings": "설정",
"distance_units": "거리 단위", "distance_units": "거리 단위",
"metric": "미터법", "metric": "미터법",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "오픈스트리트맵", "openStreetMap": "오픈스트리트맵",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Grįžti į ankstesnį bazinį žemėlapį", "switch_basemap": "Grįžti į ankstesnį bazinį žemėlapį",
"toggle_overlays": "Kaitalioti sluoksnius", "toggle_overlays": "Kaitalioti sluoksnius",
"toggle_3d": "Kaitalioti rodymą 3D", "toggle_3d": "Kaitalioti rodymą 3D",
"fullscreen": "Full screen",
"settings": "Nustatymai", "settings": "Nustatymai",
"distance_units": "Atstumo vienetai", "distance_units": "Atstumo vienetai",
"metric": "Metriniai", "metric": "Metriniai",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Switch to previous basemap", "switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays", "toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D", "toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings", "settings": "Settings",
"distance_units": "Distance units", "distance_units": "Distance units",
"metric": "Metric", "metric": "Metric",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Schakel over naar vorige basiskaart", "switch_basemap": "Schakel over naar vorige basiskaart",
"toggle_overlays": "Schermlagen in- of uitschakelen", "toggle_overlays": "Schermlagen in- of uitschakelen",
"toggle_3d": "3D aan/uit", "toggle_3d": "3D aan/uit",
"fullscreen": "Full screen",
"settings": "Instellingen", "settings": "Instellingen",
"distance_units": "Afstandseenheden", "distance_units": "Afstandseenheden",
"metric": "Metrische eenheden", "metric": "Metrische eenheden",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Buiten", "maptilerOutdoors": "MapTiler Buiten",
"maptilerSatellite": "MapTiler satelliet", "maptilerSatellite": "MapTiler satelliet",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Bytt til forrige basekart", "switch_basemap": "Bytt til forrige basekart",
"toggle_overlays": "Vis eller skjul kartlag", "toggle_overlays": "Vis eller skjul kartlag",
"toggle_3d": "Skru av/på 3D", "toggle_3d": "Skru av/på 3D",
"fullscreen": "Full screen",
"settings": "Innstillinger", "settings": "Innstillinger",
"distance_units": "Avstandsenhet", "distance_units": "Avstandsenhet",
"metric": "Metrisk", "metric": "Metrisk",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Przełącz na poprzednią mapę", "switch_basemap": "Przełącz na poprzednią mapę",
"toggle_overlays": "Przełącz nakładki", "toggle_overlays": "Przełącz nakładki",
"toggle_3d": "Przełącz widok 3D", "toggle_3d": "Przełącz widok 3D",
"fullscreen": "Full screen",
"settings": "Ustawienia", "settings": "Ustawienia",
"distance_units": "Jednostki odległości", "distance_units": "Jednostki odległości",
"metric": "Metryczne", "metric": "Metryczne",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Trocar para mapa base anterior", "switch_basemap": "Trocar para mapa base anterior",
"toggle_overlays": "Alternar sobreposições", "toggle_overlays": "Alternar sobreposições",
"toggle_3d": "Alternar 3D", "toggle_3d": "Alternar 3D",
"fullscreen": "Full screen",
"settings": "Configurações", "settings": "Configurações",
"distance_units": "Unidades de distância", "distance_units": "Unidades de distância",
"metric": "Métrico", "metric": "Métrico",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Trocar para mapa base anterior", "switch_basemap": "Trocar para mapa base anterior",
"toggle_overlays": "Alternar sobreposições", "toggle_overlays": "Alternar sobreposições",
"toggle_3d": "Alternar 3D", "toggle_3d": "Alternar 3D",
"fullscreen": "Full screen",
"settings": "Configurações", "settings": "Configurações",
"distance_units": "Unidades de distância", "distance_units": "Unidades de distância",
"metric": "Métrico", "metric": "Métrico",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Comutați la harta de bază anterioară", "switch_basemap": "Comutați la harta de bază anterioară",
"toggle_overlays": "Comută suprapunerile", "toggle_overlays": "Comută suprapunerile",
"toggle_3d": "Comută 3D", "toggle_3d": "Comută 3D",
"fullscreen": "Full screen",
"settings": "Setări", "settings": "Setări",
"distance_units": "Unități de distanță", "distance_units": "Unități de distanță",
"metric": "Metric", "metric": "Metric",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Переключиться на предыдущую базовую карту", "switch_basemap": "Переключиться на предыдущую базовую карту",
"toggle_overlays": "Переключить слои", "toggle_overlays": "Переключить слои",
"toggle_3d": "Включить 3D", "toggle_3d": "Включить 3D",
"fullscreen": "Full screen",
"settings": "Настройки", "settings": "Настройки",
"distance_units": "Единицы измерения расстояния", "distance_units": "Единицы измерения расстояния",
"metric": "Метрические", "metric": "Метрические",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Vrati prethodnu osnovnu mapu", "switch_basemap": "Vrati prethodnu osnovnu mapu",
"toggle_overlays": "Sakrij/Prikaži preklapanja", "toggle_overlays": "Sakrij/Prikaži preklapanja",
"toggle_3d": "Sakrij/Prikaži 3D", "toggle_3d": "Sakrij/Prikaži 3D",
"fullscreen": "Full screen",
"settings": "Podešavanja", "settings": "Podešavanja",
"distance_units": "Jedinica razdaljine", "distance_units": "Jedinica razdaljine",
"metric": "Metričke", "metric": "Metričke",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Växla till föregående baskarta", "switch_basemap": "Växla till föregående baskarta",
"toggle_overlays": "Växla överlagring", "toggle_overlays": "Växla överlagring",
"toggle_3d": "Växla 3D", "toggle_3d": "Växla 3D",
"fullscreen": "Full screen",
"settings": "Inställningar", "settings": "Inställningar",
"distance_units": "Enhet för distans", "distance_units": "Enhet för distans",
"metric": "Metrisk", "metric": "Metrisk",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Switch to previous basemap", "switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays", "toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D", "toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings", "settings": "Settings",
"distance_units": "Distance units", "distance_units": "Distance units",
"metric": "Metric", "metric": "Metric",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Önceki temel haritaya geç", "switch_basemap": "Önceki temel haritaya geç",
"toggle_overlays": "Katmanları Aç/Kapa", "toggle_overlays": "Katmanları Aç/Kapa",
"toggle_3d": "3B'yi aç/kapat", "toggle_3d": "3B'yi aç/kapat",
"fullscreen": "Full screen",
"settings": "Ayarlar", "settings": "Ayarlar",
"distance_units": "Mesafe birimleri", "distance_units": "Mesafe birimleri",
"metric": "Metrik", "metric": "Metrik",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -28,7 +28,7 @@
"undo": "Скасувати", "undo": "Скасувати",
"redo": "Повторити", "redo": "Повторити",
"delete": "Видалити", "delete": "Видалити",
"delete_all": "Видалити все", "delete_all": "Delete all",
"select_all": "Вибрати все", "select_all": "Вибрати все",
"view": "Вигляд", "view": "Вигляд",
"elevation_profile": "Профіль рельєфу", "elevation_profile": "Профіль рельєфу",
@@ -36,7 +36,6 @@
"switch_basemap": "Перехід до попередньої базової карти", "switch_basemap": "Перехід до попередньої базової карти",
"toggle_overlays": "Перемикання накладок", "toggle_overlays": "Перемикання накладок",
"toggle_3d": "Перемикнути 3D", "toggle_3d": "Перемикнути 3D",
"fullscreen": "Full screen",
"settings": "Налаштування", "settings": "Налаштування",
"distance_units": "Одиниці виміру відстані", "distance_units": "Одиниці виміру відстані",
"metric": "Метричні", "metric": "Метричні",
@@ -64,7 +63,7 @@
"ctrl": "Ctrl", "ctrl": "Ctrl",
"click": "Клац", "click": "Клац",
"drag": "Перетягти", "drag": "Перетягти",
"right_click_drag": "Перетягування правою кнопкою миші", "right_click_drag": "Right-click drag",
"metadata": { "metadata": {
"button": "Інформація...", "button": "Інформація...",
"name": "Назва", "name": "Назва",
@@ -82,7 +81,7 @@
"center": "Центр", "center": "Центр",
"open_in": "Відкрити в", "open_in": "Відкрити в",
"copy_coordinates": "Копіювати координати", "copy_coordinates": "Копіювати координати",
"edit_osm": "Редагувати в OpenStreetMap" "edit_osm": "Edit in OpenStreetMap"
}, },
"toolbar": { "toolbar": {
"routing": { "routing": {
@@ -192,8 +191,8 @@
"from": "Початкова точка знаходиться занадто далеко від найближчої дороги", "from": "Початкова точка знаходиться занадто далеко від найближчої дороги",
"via": "Проміжна точка знаходиться занадто далеко від найближчої дороги", "via": "Проміжна точка знаходиться занадто далеко від найближчої дороги",
"to": "Кінцева точка знаходиться занадто далеко від найближчої дороги", "to": "Кінцева точка знаходиться занадто далеко від найближчої дороги",
"distance": "Кінцева точка знаходиться занадто далеко від початкової точки", "distance": "The end point is too far from the start point",
"connection": "Зв'язку між точками не виявлено", "connection": "No connection found between the points",
"timeout": "Розрахунок маршруту є занадто довгий, спробуйте додати ближчі точки" "timeout": "Розрахунок маршруту є занадто довгий, спробуйте додати ближчі точки"
} }
}, },
@@ -235,7 +234,7 @@
}, },
"elevation": { "elevation": {
"button": "Запит даних висот", "button": "Запит даних висот",
"help": "Запит даних про висоту призведе до видалення наявних даних про висоту (якщо такі є) та їх заміни даними з MapTiler.", "help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help_no_selection": "Виберіть елемент файлу, щоб запросити дані про висоту." "help_no_selection": "Виберіть елемент файлу, щоб запросити дані про висоту."
}, },
"waypoint": { "waypoint": {
@@ -277,7 +276,7 @@
"new": "Новий користувацький шар", "new": "Новий користувацький шар",
"edit": "Редагувати користувацький шар", "edit": "Редагувати користувацький шар",
"urls": "URL-адреса(и)", "urls": "URL-адреса(и)",
"url_placeholder": "JSON у форматі WMTS, WMS або MapLibre", "url_placeholder": "WMTS, WMS or MapLibre style JSON",
"max_zoom": "Максимальний зум", "max_zoom": "Максимальний зум",
"layer_type": "Тип шару", "layer_type": "Тип шару",
"basemap": "Базова карта", "basemap": "Базова карта",
@@ -286,7 +285,7 @@
"update": "Оновити шар" "update": "Оновити шар"
}, },
"opacity": "Непрозорість накладання", "opacity": "Непрозорість накладання",
"terrain": "Джерело інформації про місцевість", "terrain": "Terrain source",
"label": { "label": {
"basemaps": "Базові карти", "basemaps": "Базові карти",
"overlays": "Накладання", "overlays": "Накладання",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",
@@ -333,7 +331,7 @@
"usgs": "USGS", "usgs": "USGS",
"bikerouterGravel": "bikerouter.de Gravel", "bikerouterGravel": "bikerouter.de Gravel",
"cyclOSMlite": "CyclOSM Lite", "cyclOSMlite": "CyclOSM Lite",
"mapterhornHillshade": "Рельєфна карта Маптерхорна", "mapterhornHillshade": "Mapterhorn Hillshade",
"openRailwayMap": "OpenRailwayMap", "openRailwayMap": "OpenRailwayMap",
"swisstopoSlope": "swisstopo Slope", "swisstopoSlope": "swisstopo Slope",
"swisstopoHiking": "swisstopo Hiking", "swisstopoHiking": "swisstopo Hiking",
@@ -363,7 +361,7 @@
"water": "Вода", "water": "Вода",
"shower": "Душ", "shower": "Душ",
"shelter": "Укриття", "shelter": "Укриття",
"cemetery": "Кладовище", "cemetery": "Cemetery",
"motorized": "Автомобілі та Мотоцикли", "motorized": "Автомобілі та Мотоцикли",
"fuel-station": "Паливна станція", "fuel-station": "Паливна станція",
"parking": "Парковка", "parking": "Парковка",
@@ -495,7 +493,7 @@
"email": "Електронна пошта", "email": "Електронна пошта",
"contribute": "Зробити внесок", "contribute": "Зробити внесок",
"supported_by": "за підтримки", "supported_by": "за підтримки",
"features": "Об'єкти", "features": "Features",
"route_planning": "Планування маршруту", "route_planning": "Планування маршруту",
"route_planning_description": "Інтуїтивно зрозумілий інтерфейс для створення маршрутів, адаптованих під кожен вид спорту, на основі даних OpenStreetMap.", "route_planning_description": "Інтуїтивно зрозумілий інтерфейс для створення маршрутів, адаптованих під кожен вид спорту, на основі даних OpenStreetMap.",
"file_processing": "Розширена обробка файлу", "file_processing": "Розширена обробка файлу",
@@ -504,15 +502,15 @@
"maps_description": "Велика колекція базових карт, шарів та точок інтересу, щоб допомогти вам спланувати наступну outdoor-пригоду або візуалізувати своє останнє досягнення.", "maps_description": "Велика колекція базових карт, шарів та точок інтересу, щоб допомогти вам спланувати наступну outdoor-пригоду або візуалізувати своє останнє досягнення.",
"data_visualization": "Візуалізація даних", "data_visualization": "Візуалізація даних",
"data_visualization_description": "Інтерактивний профіль висот з детальною статистикою для аналізу записаних активностей та майбутніх цілей.", "data_visualization_description": "Інтерактивний профіль висот з детальною статистикою для аналізу записаних активностей та майбутніх цілей.",
"philosophy": "Філософія", "philosophy": "Philosophy",
"foss": "Безкоштовно, без реклами та з відкритим кодом", "foss": "Free, ad-free and open source",
"foss_description": "Користування вебсайт є безкоштовним, він не містить реклами, а його вихідний код оприлюднено на GitHub.", "foss_description": "The website is free to use, without ads, and the source code is publicly available on GitHub.",
"privacy": "З повагою до конфіденційності", "privacy": "Privacy-friendly",
"privacy_description": "Ваші файли GPX ніколи не залишають меж вашого браузера. Жодного відстеження, жодного збору даних.", "privacy_description": "Your GPX files never leave your browser. No tracking, no data collection.",
"community": "Завдяки підтримці спільноти", "community": "Made possible by the community",
"community_description": "gpx.studio має чудову спільноту, яка вже багато років покриває витрати проєкту коштом пожертв, а також сприяє його розвитку, пропонуючи нові функції, повідомляючи про помилки та перекладаючи сайт на багато мов.", "community_description": "gpx.studio has an amazing community that has covered its costs through donations for years, while shaping the project through feature suggestions, bug reports, and translations into many languages.",
"support_button": "Підтримайте gpx.studio на Open Collective", "support_button": "Support gpx.studio on Open Collective",
"translate_button": "Допоможіть перекласти вебсайт на Crowdin" "translate_button": "Help translate the website on Crowdin"
}, },
"docs": { "docs": {
"translate": "Покращити переклад на Crowdin", "translate": "Покращити переклад на Crowdin",
@@ -537,7 +535,7 @@
}, },
"embedding": { "embedding": {
"title": "Створити власну карту", "title": "Створити власну карту",
"maptiler_key": "Ключ MapTiler (не обов’язково, потрібен лише для карт MapTiler)", "maptiler_key": "MapTiler key (optional, only required for MapTiler maps)",
"file_urls": "URL-адреси файлів (розділені комами)", "file_urls": "URL-адреси файлів (розділені комами)",
"drive_ids": "Ідентифікатори файлів Google Drive (розділені комами)", "drive_ids": "Ідентифікатори файлів Google Drive (розділені комами)",
"basemap": "Базова карта", "basemap": "Базова карта",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "Quay lại bản đồ trước đó", "switch_basemap": "Quay lại bản đồ trước đó",
"toggle_overlays": "Thay đổi lớp phủ", "toggle_overlays": "Thay đổi lớp phủ",
"toggle_3d": "Chuyển đổi 3D", "toggle_3d": "Chuyển đổi 3D",
"fullscreen": "Full screen",
"settings": "Cài đặt", "settings": "Cài đặt",
"distance_units": "Đơn vị khoảng cách", "distance_units": "Đơn vị khoảng cách",
"metric": "Hệ mét", "metric": "Hệ mét",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -16,9 +16,9 @@
"duplicate": "Duplicate", "duplicate": "Duplicate",
"copy": "Copy", "copy": "Copy",
"paste": "Paste", "paste": "Paste",
"cut": "剪下", "cut": "Cut",
"export": "匯出……", "export": "Export...",
"export_all": "匯出所有……", "export_all": "Export all...",
"export_options": "Export options", "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_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", "support_button": "Help keep the website free",
@@ -36,7 +36,6 @@
"switch_basemap": "Switch to previous basemap", "switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays", "toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D", "toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings", "settings": "Settings",
"distance_units": "Distance units", "distance_units": "Distance units",
"metric": "Metric", "metric": "Metric",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",

View File

@@ -36,7 +36,6 @@
"switch_basemap": "切换到上一个底图", "switch_basemap": "切换到上一个底图",
"toggle_overlays": "切换叠加层", "toggle_overlays": "切换叠加层",
"toggle_3d": "三维视图", "toggle_3d": "三维视图",
"fullscreen": "Full screen",
"settings": "设置", "settings": "设置",
"distance_units": "距离单位", "distance_units": "距离单位",
"metric": "公制", "metric": "公制",
@@ -308,7 +307,6 @@
"maptilerTopo": "MapTiler Topo", "maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors", "maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
"openHikingMap": "OpenHikingMap", "openHikingMap": "OpenHikingMap",