98 Commits

Author SHA1 Message Date
vcoppe 9ee1c1cd5a New translations en.json (French)
[ci skip]
2026-05-27 21:52:41 +02:00
vcoppe 3720f3bf4e New translations elevation.mdx (Serbian (Latin))
[ci skip]
2026-05-27 20:35:51 +02:00
vcoppe b8580b99ff New translations elevation.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-05-27 20:35:49 +02:00
vcoppe bd3f0b706f New translations elevation.mdx (Latvian)
[ci skip]
2026-05-27 20:35:48 +02:00
vcoppe ab8da39cfa New translations elevation.mdx (Thai)
[ci skip]
2026-05-27 20:35:46 +02:00
vcoppe b97622e663 New translations elevation.mdx (Indonesian)
[ci skip]
2026-05-27 20:35:45 +02:00
vcoppe 38a935db36 New translations elevation.mdx (Portuguese, Brazilian)
[ci skip]
2026-05-27 20:35:43 +02:00
vcoppe d9b73deaa8 New translations elevation.mdx (Vietnamese)
[ci skip]
2026-05-27 20:35:42 +02:00
vcoppe 7425fbfeaa New translations elevation.mdx (Chinese Simplified)
[ci skip]
2026-05-27 20:35:40 +02:00
vcoppe 7638e5dc3c New translations elevation.mdx (Ukrainian)
[ci skip]
2026-05-27 20:35:39 +02:00
vcoppe eea43ae6d2 New translations elevation.mdx (Turkish)
[ci skip]
2026-05-27 20:35:37 +02:00
vcoppe 21cf4d0585 New translations elevation.mdx (Swedish)
[ci skip]
2026-05-27 20:35:36 +02:00
vcoppe 888e7fbb9f New translations elevation.mdx (Russian)
[ci skip]
2026-05-27 20:35:34 +02:00
vcoppe 9b613e7fc9 New translations elevation.mdx (Portuguese)
[ci skip]
2026-05-27 20:35:32 +02:00
vcoppe 8c6ed3819d New translations elevation.mdx (Polish)
[ci skip]
2026-05-27 20:35:31 +02:00
vcoppe 797f11565f New translations elevation.mdx (Norwegian)
[ci skip]
2026-05-27 20:35:30 +02:00
vcoppe c136f58ddf New translations elevation.mdx (Dutch)
[ci skip]
2026-05-27 20:35:28 +02:00
vcoppe 4103bb0840 New translations elevation.mdx (Lithuanian)
[ci skip]
2026-05-27 20:35:27 +02:00
vcoppe b2b911918d New translations elevation.mdx (Korean)
[ci skip]
2026-05-27 20:35:25 +02:00
vcoppe 55db10459a New translations elevation.mdx (Italian)
[ci skip]
2026-05-27 20:35:24 +02:00
vcoppe 0db07cd1d4 New translations elevation.mdx (Hungarian)
[ci skip]
2026-05-27 20:35:22 +02:00
vcoppe dfe9fbe0b4 New translations elevation.mdx (Hebrew)
[ci skip]
2026-05-27 20:35:21 +02:00
vcoppe 2d184a8e04 New translations elevation.mdx (Finnish)
[ci skip]
2026-05-27 20:35:19 +02:00
vcoppe acf355584a New translations elevation.mdx (Basque)
[ci skip]
2026-05-27 20:35:18 +02:00
vcoppe e49767321c New translations elevation.mdx (Greek)
[ci skip]
2026-05-27 20:35:16 +02:00
vcoppe b544dcc373 New translations elevation.mdx (German)
[ci skip]
2026-05-27 20:35:14 +02:00
vcoppe d63dff34a4 New translations elevation.mdx (Danish)
[ci skip]
2026-05-27 20:35:13 +02:00
vcoppe 6da81b38f1 New translations elevation.mdx (Czech)
[ci skip]
2026-05-27 20:35:12 +02:00
vcoppe c53c4ab136 New translations elevation.mdx (Catalan)
[ci skip]
2026-05-27 20:35:10 +02:00
vcoppe a14422be71 New translations elevation.mdx (Belarusian)
[ci skip]
2026-05-27 20:35:09 +02:00
vcoppe a41c600d23 New translations elevation.mdx (Spanish)
[ci skip]
2026-05-27 20:35:07 +02:00
vcoppe d1ace62410 New translations elevation.mdx (French)
[ci skip]
2026-05-27 20:35:06 +02:00
vcoppe ca404985a9 New translations elevation.mdx (Romanian)
[ci skip]
2026-05-27 20:35:04 +02:00
vcoppe f6ffb5afb4 New translations map-controls.mdx (Serbian (Latin))
[ci skip]
2026-05-27 20:29:31 +02:00
vcoppe 796c88258f New translations map-controls.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-05-27 20:29:30 +02:00
vcoppe c23af4981a New translations map-controls.mdx (Latvian)
[ci skip]
2026-05-27 20:29:28 +02:00
vcoppe 2a7a444848 New translations map-controls.mdx (Thai)
[ci skip]
2026-05-27 20:29:27 +02:00
vcoppe 947c522187 New translations map-controls.mdx (Indonesian)
[ci skip]
2026-05-27 20:29:25 +02:00
vcoppe 37d6fa3562 New translations map-controls.mdx (Portuguese, Brazilian)
[ci skip]
2026-05-27 20:29:24 +02:00
vcoppe e8ef5ba125 New translations map-controls.mdx (Vietnamese)
[ci skip]
2026-05-27 20:29:22 +02:00
vcoppe e3d787029a New translations map-controls.mdx (Ukrainian)
[ci skip]
2026-05-27 20:29:20 +02:00
vcoppe 6bfd3e9560 New translations map-controls.mdx (Turkish)
[ci skip]
2026-05-27 20:29:19 +02:00
vcoppe ecc4591503 New translations map-controls.mdx (Swedish)
[ci skip]
2026-05-27 20:29:17 +02:00
vcoppe b7b042b44c New translations map-controls.mdx (Russian)
[ci skip]
2026-05-27 20:29:16 +02:00
vcoppe 376ddae828 New translations map-controls.mdx (Portuguese)
[ci skip]
2026-05-27 20:29:14 +02:00
vcoppe ced901d935 New translations map-controls.mdx (Polish)
[ci skip]
2026-05-27 20:29:13 +02:00
vcoppe f3464f235f New translations map-controls.mdx (Norwegian)
[ci skip]
2026-05-27 20:29:11 +02:00
vcoppe 66d7bb7399 New translations map-controls.mdx (Dutch)
[ci skip]
2026-05-27 20:29:10 +02:00
vcoppe 6934def87f New translations map-controls.mdx (Lithuanian)
[ci skip]
2026-05-27 20:29:08 +02:00
vcoppe 491ce645ff New translations map-controls.mdx (Korean)
[ci skip]
2026-05-27 20:29:07 +02:00
vcoppe b924f410ea New translations map-controls.mdx (Italian)
[ci skip]
2026-05-27 20:29:05 +02:00
vcoppe 088d4418b9 New translations map-controls.mdx (Hungarian)
[ci skip]
2026-05-27 20:29:04 +02:00
vcoppe bb312a1bf3 New translations map-controls.mdx (Hebrew)
[ci skip]
2026-05-27 20:29:02 +02:00
vcoppe 90fd5bba21 New translations map-controls.mdx (Finnish)
[ci skip]
2026-05-27 20:29:01 +02:00
vcoppe d6aaccbfa0 New translations map-controls.mdx (Basque)
[ci skip]
2026-05-27 20:28:59 +02:00
vcoppe 7c913e7d0d New translations map-controls.mdx (Greek)
[ci skip]
2026-05-27 20:28:58 +02:00
vcoppe 54d28410bb New translations map-controls.mdx (German)
[ci skip]
2026-05-27 20:28:56 +02:00
vcoppe c521183c16 New translations map-controls.mdx (Danish)
[ci skip]
2026-05-27 20:28:55 +02:00
vcoppe 33b1dff236 New translations map-controls.mdx (Czech)
[ci skip]
2026-05-27 20:28:53 +02:00
vcoppe 6493006f9f New translations map-controls.mdx (Catalan)
[ci skip]
2026-05-27 20:28:51 +02:00
vcoppe 259fe3fec9 New translations map-controls.mdx (Belarusian)
[ci skip]
2026-05-27 20:28:50 +02:00
vcoppe 7678a7f93a New translations map-controls.mdx (Spanish)
[ci skip]
2026-05-27 20:28:48 +02:00
vcoppe 826f58fb9a New translations map-controls.mdx (French)
[ci skip]
2026-05-27 20:28:45 +02:00
vcoppe da33d848a2 New translations map-controls.mdx (Romanian)
[ci skip]
2026-05-27 20:28:44 +02:00
vcoppe 6825228c76 New translations en.json (Serbian (Latin))
[ci skip]
2026-05-27 20:27:11 +02:00
vcoppe 5227e8bcf6 New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
2026-05-27 20:27:09 +02:00
vcoppe 347d40d973 New translations en.json (Latvian)
[ci skip]
2026-05-27 20:27:07 +02:00
vcoppe 3f711505de New translations en.json (Thai)
[ci skip]
2026-05-27 20:27:06 +02:00
vcoppe e2852b721a New translations en.json (Portuguese, Brazilian)
[ci skip]
2026-05-27 20:27:04 +02:00
vcoppe a775f6fb0b New translations en.json (Vietnamese)
[ci skip]
2026-05-27 20:27:02 +02:00
vcoppe 9bf8e365e4 New translations en.json (Chinese Simplified)
[ci skip]
2026-05-27 20:27:00 +02:00
vcoppe 34b6bfe306 New translations en.json (Ukrainian)
[ci skip]
2026-05-27 20:26:59 +02:00
vcoppe 707c1f9c5a New translations map-controls.mdx (Chinese Simplified)
[ci skip]
2026-05-27 20:26:57 +02:00
vcoppe ef722839f4 New translations en.json (Indonesian)
[ci skip]
2026-05-27 20:26:55 +02:00
vcoppe 33ccf3154b New translations en.json (Turkish)
[ci skip]
2026-05-27 20:26:54 +02:00
vcoppe f4629dc0dc New translations en.json (Swedish)
[ci skip]
2026-05-27 20:26:52 +02:00
vcoppe 2393079067 New translations en.json (Russian)
[ci skip]
2026-05-27 20:26:50 +02:00
vcoppe 40972be26a New translations en.json (Portuguese)
[ci skip]
2026-05-27 20:26:49 +02:00
vcoppe 8b7742ef78 New translations en.json (Polish)
[ci skip]
2026-05-27 20:26:47 +02:00
vcoppe 3c15d9d061 New translations en.json (Norwegian)
[ci skip]
2026-05-27 20:26:46 +02:00
vcoppe c56d750bb3 New translations en.json (Lithuanian)
[ci skip]
2026-05-27 20:26:44 +02:00
vcoppe 4dfc1b26b1 New translations en.json (Korean)
[ci skip]
2026-05-27 20:26:42 +02:00
vcoppe 1de19a85eb New translations en.json (Italian)
[ci skip]
2026-05-27 20:26:41 +02:00
vcoppe 3630953f4b New translations en.json (Hungarian)
[ci skip]
2026-05-27 20:26:39 +02:00
vcoppe b211e36ed3 New translations en.json (Hebrew)
[ci skip]
2026-05-27 20:26:36 +02:00
vcoppe fcb3bebdba New translations en.json (Finnish)
[ci skip]
2026-05-27 20:26:34 +02:00
vcoppe 923d61547d New translations en.json (Basque)
[ci skip]
2026-05-27 20:26:33 +02:00
vcoppe aaff9045e4 New translations en.json (Greek)
[ci skip]
2026-05-27 20:26:31 +02:00
vcoppe 22b8880a9e New translations en.json (German)
[ci skip]
2026-05-27 20:26:29 +02:00
vcoppe b7216f9b77 New translations en.json (Danish)
[ci skip]
2026-05-27 20:26:28 +02:00
vcoppe df55eb59f5 New translations en.json (Czech)
[ci skip]
2026-05-27 20:26:26 +02:00
vcoppe a83d9afe51 New translations en.json (Catalan)
[ci skip]
2026-05-27 20:26:24 +02:00
vcoppe e449308563 New translations en.json (Belarusian)
[ci skip]
2026-05-27 20:26:23 +02:00
vcoppe 23179716b1 New translations en.json (Spanish)
[ci skip]
2026-05-27 20:26:21 +02:00
vcoppe b532a5d40a New translations en.json (French)
[ci skip]
2026-05-27 20:26:19 +02:00
vcoppe 78796f9d8f New translations en.json (Romanian)
[ci skip]
2026-05-27 20:26:18 +02:00
vcoppe 17c81e22e0 New translations en.json (Dutch)
[ci skip]
2026-05-27 20:26:16 +02:00
vcoppe ca72b7a368 New translations map-controls.mdx (Chinese Simplified)
[ci skip]
2026-05-25 05:03:14 +02:00
65 changed files with 686 additions and 680 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 KiB

After

Width:  |  Height:  |  Size: 339 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 729 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 KiB

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 KiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

+19 -16
View File
@@ -31,10 +31,10 @@ import bikerouterGravel from './custom/bikerouter-gravel.json';
export const maptilerKeyPlaceHolder = 'MAPTILER_KEY'; export const maptilerKeyPlaceHolder = 'MAPTILER_KEY';
export const basemaps: { [key: string]: string | StyleSpecification } = { export const basemaps: { [key: string]: string | StyleSpecification } = {
libertyTopo: 'https://styles.gpx.studio/liberty-topo.json', maptilerStreets: `https://api.maptiler.com/maps/streets-v4/style.json?key=${maptilerKeyPlaceHolder}`,
libertySatellite: 'https://styles.gpx.studio/liberty-satellite.json', maptilerTopo: `https://api.maptiler.com/maps/topo-v4/style.json?key=${maptilerKeyPlaceHolder}`,
osm: 'https://styles.gpx.studio/osm.json', maptilerOutdoors: `https://api.maptiler.com/maps/outdoor-v4/style.json?key=${maptilerKeyPlaceHolder}`,
osmTopo: 'https://styles.gpx.studio/osm-topo.json', maptilerSatellite: `https://api.maptiler.com/maps/hybrid-v4/style.json?key=${maptilerKeyPlaceHolder}`,
esriSatellite: { esriSatellite: {
version: 8, version: 8,
sources: { sources: {
@@ -799,10 +799,10 @@ export type LayerTreeType = { [key: string]: LayerTreeType | boolean };
export const basemapTree: LayerTreeType = { export const basemapTree: LayerTreeType = {
basemaps: { basemaps: {
world: { world: {
libertyTopo: true, maptilerStreets: true,
libertySatellite: true, maptilerTopo: true,
osm: true, maptilerOutdoors: true,
osmTopo: true, maptilerSatellite: true,
esriSatellite: true, esriSatellite: true,
openStreetMap: true, openStreetMap: true,
openTopoMap: true, openTopoMap: true,
@@ -936,7 +936,7 @@ export const overpassTree: LayerTreeType = {
}; };
// Default basemap used // Default basemap used
export const defaultBasemap = 'libertyTopo'; export const defaultBasemap = 'maptilerStreets';
// Default overlays used (none) // Default overlays used (none)
export const defaultOverlays: LayerTreeType = { export const defaultOverlays: LayerTreeType = {
@@ -1025,10 +1025,10 @@ export const defaultOverpassQueries: LayerTreeType = {
export const defaultBasemapTree: LayerTreeType = { export const defaultBasemapTree: LayerTreeType = {
basemaps: { basemaps: {
world: { world: {
libertyTopo: true, maptilerStreets: true,
libertySatellite: true, maptilerTopo: true,
osm: true, maptilerOutdoors: true,
osmTopo: true, maptilerSatellite: true,
esriSatellite: false, esriSatellite: false,
openStreetMap: true, openStreetMap: true,
openTopoMap: true, openTopoMap: true,
@@ -1487,11 +1487,14 @@ export const overpassQueryData: Record<string, OverpassQueryData> = {
}; };
export const terrainSources: { [key: string]: RasterDEMSourceSpecification } = { export const terrainSources: { [key: string]: RasterDEMSourceSpecification } = {
'maptiler-dem': {
type: 'raster-dem',
url: `https://api.maptiler.com/tiles/terrain-rgb-v2/tiles.json?key=${maptilerKeyPlaceHolder}`,
},
mapterhorn: { mapterhorn: {
type: 'raster-dem', type: 'raster-dem',
url: 'https://tiles.gpx.studio/mapterhorn.json', url: 'https://tiles.mapterhorn.com/tilejson.json',
encoding: 'terrarium',
}, },
}; };
export const defaultTerrainSource = 'mapterhorn'; export const defaultTerrainSource = 'maptiler-dem';
+7 -1
View File
@@ -8,7 +8,7 @@
...others ...others
}: { }: {
iconOnly?: boolean; iconOnly?: boolean;
company?: 'gpx.studio' | 'github' | 'crowdin' | 'facebook' | 'reddit'; company?: 'gpx.studio' | 'maptiler' | 'github' | 'crowdin' | 'facebook' | 'reddit';
[key: string]: any; [key: string]: any;
} = $props(); } = $props();
</script> </script>
@@ -19,6 +19,12 @@
alt="Logo of gpx.studio." alt="Logo of gpx.studio."
{...others} {...others}
/> />
{:else if company === 'maptiler'}
<img
src="{base}/maptiler-logo{mode.current === 'dark' ? '-dark' : ''}.svg"
alt="Logo of Maptiler."
{...others}
/>
{:else if company === 'github'} {:else if company === 'github'}
<svg <svg
role="img" role="img"
@@ -1,10 +1,10 @@
<script lang="ts"> <script lang="ts">
import topoMap from '$lib/assets/img/docs/maps/topo.png?enhanced'; import maptilerTopoMap from '$lib/assets/img/home/maptiler-topo.png?enhanced';
import waymarkedMap from '$lib/assets/img/docs/maps/waymarked.png?enhanced'; import waymarkedMap from '$lib/assets/img/home/waymarked.png?enhanced';
</script> </script>
<div class="relative h-80 aspect-square rounded-2xl shadow-xl overflow-clip"> <div class="relative h-80 aspect-square rounded-2xl shadow-xl overflow-clip">
<enhanced:img src={topoMap} alt="Topo map screenshot." class="absolute" /> <enhanced:img src={maptilerTopoMap} alt="MapTiler Topo map screenshot." class="absolute" />
<enhanced:img <enhanced:img
src={waymarkedMap} src={waymarkedMap}
alt="Waymarked Trails map screenshot." alt="Waymarked Trails map screenshot."
@@ -29,7 +29,7 @@ export const defaultEmbeddingOptions = {
key: '', key: '',
files: [], files: [],
ids: [], ids: [],
basemap: 'libertyTopo', basemap: 'maptilerStreets',
elevation: { elevation: {
show: true, show: true,
height: 170, height: 170,
@@ -126,7 +126,7 @@ export function convertOldEmbeddingOptions(options: URLSearchParams): any {
if (options.has('source')) { if (options.has('source')) {
let basemap = options.get('source')!; let basemap = options.get('source')!;
if (basemap === 'satellite') { if (basemap === 'satellite') {
newOptions.basemap = 'libertySatellite'; newOptions.basemap = 'maptilerSatellite';
} else if (basemap === 'otm') { } else if (basemap === 'otm') {
newOptions.basemap = 'openTopoMap'; newOptions.basemap = 'openTopoMap';
} else if (basemap === 'ohm') { } else if (basemap === 'ohm') {
@@ -74,7 +74,7 @@ export class DistanceMarkers {
layout: { layout: {
'text-field': ['get', 'distance'], 'text-field': ['get', 'distance'],
'text-size': 14, 'text-size': 14,
'text-font': ['Noto Sans Bold'], 'text-font': ['Open Sans Bold'],
}, },
paint: { paint: {
'text-color': 'black', 'text-color': 'black',
@@ -251,11 +251,11 @@ export class GPXLayer {
source: this.fileId, source: this.fileId,
layout: { layout: {
'text-field': '»', 'text-field': '»',
'text-offset': [0, -0.1], 'text-offset': [0, -0.06],
'text-keep-upright': false, 'text-keep-upright': false,
'text-max-angle': 361, 'text-max-angle': 361,
'text-allow-overlap': true, 'text-allow-overlap': true,
'text-font': ['Noto Sans Bold'], 'text-font': ['Open Sans Bold'],
'symbol-placement': 'line', 'symbol-placement': 'line',
'symbol-spacing': 20, 'symbol-spacing': 20,
}, },
@@ -24,7 +24,7 @@ liveQuery(() => db.overpassdata.toArray()).subscribe((pois) => {
}); });
export class OverpassLayer { export class OverpassLayer {
overpassUrl = 'https://overpass.gpx.studio/api/interpreter'; overpassUrl = 'https://overpass.private.coffee/api/interpreter';
minZoom = 12; minZoom = 12;
queryZoom = 12; queryZoom = 12;
expirationTime = 7 * 24 * 3600 * 1000; expirationTime = 7 * 24 * 3600 * 1000;
+31 -65
View File
@@ -10,8 +10,7 @@ import {
import { getLayers } from '$lib/components/map/layer-control/utils'; import { getLayers } from '$lib/components/map/layer-control/utils';
import { i18n } from '$lib/i18n.svelte'; import { i18n } from '$lib/i18n.svelte';
const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource, distanceUnits } = const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource } = settings;
settings;
const emptySource: maplibregl.GeoJSONSourceSpecification = { const emptySource: maplibregl.GeoJSONSourceSpecification = {
type: 'geojson', type: 'geojson',
@@ -58,24 +57,15 @@ export class StyleManager {
opacities.subscribe(() => this.updateOverlays()); opacities.subscribe(() => this.updateOverlays());
terrainSource.subscribe(() => this.updateTerrain()); terrainSource.subscribe(() => this.updateTerrain());
customLayers.subscribe(() => this.updateBasemap()); customLayers.subscribe(() => this.updateBasemap());
distanceUnits.subscribe(() => {
const map = get(this._map);
if (map && (map.getLayer('contours_m') || map.getLayer('contours_ft'))) {
this.updateBasemap();
}
});
} }
updateBasemap() { updateBasemap() {
const map_ = get(this._map); const map_ = get(this._map);
if (!map_) return; if (!map_) return;
let basemap = get(currentBasemap); this.buildStyle().then((style) => map_.setStyle(style));
this.buildStyle(basemap).then((style) => {
if (get(currentBasemap) === basemap) map_.setStyle(style);
});
} }
async buildStyle(basemap: string): Promise<maplibregl.StyleSpecification> { async buildStyle(): Promise<maplibregl.StyleSpecification> {
const custom = get(customLayers); const custom = get(customLayers);
const style: maplibregl.StyleSpecification = { const style: maplibregl.StyleSpecification = {
@@ -89,31 +79,22 @@ export class StyleManager {
layers: [], layers: [],
}; };
let basemap = get(currentBasemap);
const basemapInfo = basemaps[basemap] ?? custom[basemap]?.value ?? basemaps[defaultBasemap]; const basemapInfo = basemaps[basemap] ?? custom[basemap]?.value ?? basemaps[defaultBasemap];
let basemapStyle = basemaps.openStreetMap as maplibregl.StyleSpecification; let basemapStyle = basemaps.openStreetMap as maplibregl.StyleSpecification;
try { try {
basemapStyle = await this.get(basemapInfo); basemapStyle = await this.get(basemapInfo);
for (const source in basemapStyle.sources) {
const src = basemapStyle.sources[source];
if (
src &&
typeof src === 'object' &&
'url' in src &&
typeof src.url === 'string' &&
src.url.includes(maptilerKeyPlaceHolder)
) {
src.url = src.url.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
}
} catch (e) { } catch (e) {
console.error(e.message); console.error(e.message);
} }
this.merge(style, basemapStyle); this.merge(style, basemapStyle);
const terrain = this.getCurrentTerrain(); if (this._maptilerKey !== '') {
style.sources[terrain.source] = terrainSources[terrain.source]; const terrain = this.getCurrentTerrain();
style.terrain = terrain.exaggeration > 0 ? terrain : undefined; style.sources[terrain.source] = terrainSources[terrain.source];
style.terrain = terrain.exaggeration > 0 ? terrain : undefined;
}
style.layers.push(...anchorLayers); style.layers.push(...anchorLayers);
@@ -185,6 +166,7 @@ export class StyleManager {
} }
updateTerrain() { updateTerrain() {
if (this._maptilerKey === '') return;
const map_ = get(this._map); const map_ = get(this._map);
if (!map_) return; if (!map_) return;
@@ -207,6 +189,9 @@ export class StyleManager {
): Promise<maplibregl.StyleSpecification> { ): Promise<maplibregl.StyleSpecification> {
if (typeof styleInfo === 'string') { if (typeof styleInfo === 'string') {
let styleUrl = styleInfo as string; let styleUrl = styleInfo as string;
if (styleUrl.includes(maptilerKeyPlaceHolder)) {
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) { if (!response.ok) {
throw new Error(`HTTP error fetching style "${styleInfo}": ${response.status}`); throw new Error(`HTTP error fetching style "${styleInfo}": ${response.status}`);
@@ -220,46 +205,23 @@ export class StyleManager {
merge(style: maplibregl.StyleSpecification, other: maplibregl.StyleSpecification) { merge(style: maplibregl.StyleSpecification, other: maplibregl.StyleSpecification) {
style.sources = { ...style.sources, ...other.sources }; style.sources = { ...style.sources, ...other.sources };
const units = get(distanceUnits);
for (let layer of other.layers ?? []) { for (let layer of other.layers ?? []) {
if ('source' in layer) {
if (layer.source == 'contours_m' && units === 'imperial') continue;
if (layer.source == 'contours_ft' && units !== 'imperial') continue;
}
if (layer.type === 'symbol' && layer.layout && layer.layout['text-field']) { if (layer.type === 'symbol' && layer.layout && layer.layout['text-field']) {
const textField = layer.layout['text-field']; const textField = layer.layout['text-field'];
if (Array.isArray(textField)) { if (
if ( Array.isArray(textField) &&
textField.length == 4 && textField.length >= 2 &&
Array.isArray(textField[3]) && textField[0] === 'coalesce' &&
textField[3][0] === 'coalesce' && Array.isArray(textField[1]) &&
Array.isArray(textField[3][1]) && textField[1][0] === 'get' &&
textField[3][1][0] === 'get' && typeof textField[1][1] === 'string' &&
typeof textField[3][1][1] === 'string' && textField[1][1].startsWith('name')
textField[3][1][1].startsWith('name') ) {
) { layer.layout['text-field'] = [
// OpenFreeMap styles 'coalesce',
layer.layout['text-field'] = [ ['get', `name:${i18n.lang}`],
'coalesce', ['get', 'name'],
['get', `name:${i18n.lang}`], ];
['get', 'name'],
];
}
if (
textField.length == 3 &&
textField[0] === 'coalesce' &&
Array.isArray(textField[1]) &&
textField[1][0] === 'get' &&
typeof textField[1][1] === 'string' &&
textField[1][1].startsWith('name')
) {
// OpenMapTiles styles
layer.layout['text-field'] = [
'coalesce',
['get', `name:${i18n.lang}`],
['get', 'name'],
];
}
} }
} }
style.layers.push(layer); style.layers.push(layer);
@@ -274,6 +236,10 @@ export class StyleManager {
getCurrentTerrain() { getCurrentTerrain() {
const terrain = get(terrainSource); const terrain = get(terrainSource);
const source = terrainSources[terrain];
if (source.url && source.url.includes(maptilerKeyPlaceHolder)) {
source.url = source.url.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
const map_ = get(this._map); const map_ = get(this._map);
return { return {
source: terrain, source: terrain,
+1 -1
View File
@@ -59,7 +59,7 @@ Only one basemap can be displayed at a time.
<DocsLayers /> <DocsLayers />
<span class="text-sm text-center mt-2"> <span class="text-sm text-center mt-2">
Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap. Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the <a href="https://www.maptiler.com/maps/outdoor-topo/" target="_blank">MapTiler Topo</a> basemap.
</span> </span>
</div> </div>
@@ -18,7 +18,7 @@ This tool allows you to add elevation data to traces and [points of interest](..
<DocsNote> <DocsNote>
Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>. Elevation data is provided by <a href="https://maptiler.com" target="_blank">MapTiler</a>.
You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</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>
+1 -1
View File
@@ -59,7 +59,7 @@ El botón de capas de mapa le permite cambiar entre diferentes mapas bases y alt
<DocsLayers /> <DocsLayers />
<span class="text-sm text-center mt-2"> <span class="text-sm text-center mt-2">
Pasa el ratón sobre el mapa para que la capa de <a href="https://hiking.waymarkedtrails.org" target="_blank">Caminatas por Sendas Marcadas</a> aparezca superpuesta al mapa base topográfico. Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap.
</span> </span>
</div> </div>
@@ -18,7 +18,7 @@ Esta herramienta permite añadir datos de elevación a los rastros y [puntos de
<DocsNote> <DocsNote>
Los datos de elevación son proporcionados por <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>. Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>.
Puede aprender más sobre su origen y precisión en la <a href="https://mapterhorn.com/attribution/" target="_blank">documentación</a>. You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>.
</DocsNote> </DocsNote>
+1 -1
View File
@@ -59,7 +59,7 @@ Met de kaartlagen knop kun je wisselen tussen verschillende basiskaarten, en kaa
<DocsLayers /> <DocsLayers />
<span class="text-sm text-center mt-2"> <span class="text-sm text-center mt-2">
Beweeg over de kaart om de <a href="https://hiking.waymarkedtrails.org" target="_blank">Gemarkeerde sporen wandelen</a> overlay te tonen bovenop de topografische basiskaart. Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap.
</span> </span>
</div> </div>
+2 -2
View File
@@ -13,9 +13,9 @@ title: Instellingen
Wijzig de eenheden die worden gebruikt om afstanden in de interface weer te geven. Wijzig de eenheden die worden gebruikt om afstanden in de interface weer te geven.
### <Zap size="16" class="inline-block" style="margin-bottom: 2px" /> Snelheidseenheden ### <Zap size="16" class="inline-block" style="margin-bottom: 2px" /> Snelheids eenheden
Verander de eenheden die worden gebruikt om snelheden in de interface weer te geven. Verander de eenheden die worden gebruikt om velocities in de interface weer te geven.
Je kunt kiezen tussen afstand per uur of minuten per afstand, wat geschikter kan zijn voor het uitvoeren van activiteiten. Je kunt kiezen tussen afstand per uur of minuten per afstand, wat geschikter kan zijn voor het uitvoeren van activiteiten.
### <Thermometer size="16" class="inline-block" style="margin-bottom: 2px" /> Temperatuureenheden ### <Thermometer size="16" class="inline-block" style="margin-bottom: 2px" /> Temperatuureenheden
@@ -18,7 +18,7 @@ Met dit gereedschap kun je hoogtegegevens toevoegen aan sporen en [interessante
<DocsNote> <DocsNote>
Hoogtegegevens worden verstrekt door <a href="https://maptiler.com" target="_blank">Mapterhorn</a>. Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>.
Je kunt meer leren over de oorsprong en nauwkeurigheid in de <a href="https://mapterhorn.com/attribution/" target="_blank">documentatie</a>. You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>.
</DocsNote> </DocsNote>
+2 -2
View File
@@ -1,5 +1,5 @@
--- ---
title: 常見問題 title: FAQ
--- ---
<script> <script>
@@ -8,7 +8,7 @@ title: 常見問題
# { title } # { title }
### 需要捐贈才能使用這網站嗎? ### Do I need to donate to use the website?
No. No.
The website is free to use and always will be (as long as it is financially sustainable). The website is free to use and always will be (as long as it is financially sustainable).
+2 -2
View File
@@ -1,5 +1,5 @@
--- ---
title: 設定 title: Settings
--- ---
<script lang="ts"> <script lang="ts">
@@ -9,7 +9,7 @@ title: 設定
# { title } # { title }
### <Ruler size="16" class="inline-block" style="margin-bottom: 2px" /> 距離單位 ### <Ruler size="16" class="inline-block" style="margin-bottom: 2px" /> Distance units
Change the units used to display distances in the interface. Change the units used to display distances in the interface.
@@ -13,7 +13,7 @@ title: Route planning and editing
The route planning and editing tool allows you to create and edit routes by placing or moving anchor points on the map. The route planning and editing tool allows you to create and edit routes by placing or moving anchor points on the map.
## 設定 ## Settings
As shown below, the tool dialog contains a few settings to control the routing behavior. As shown below, the tool dialog contains a few settings to control the routing behavior.
You can minimize the dialog to save space by clicking on <button><SquareArrowUpLeft size="16" class="inline-block" style="margin-bottom: 2px" /></button>. You can minimize the dialog to save space by clicking on <button><SquareArrowUpLeft size="16" class="inline-block" style="margin-bottom: 2px" /></button>.
+1 -1
View File
@@ -59,7 +59,7 @@ title: 地图控件
<DocsLayers /> <DocsLayers />
<span class="text-sm text-center mt-2"> <span class="text-sm text-center mt-2">
鼠标悬停在地图上,可在地形图底图上方显示 <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails 徒步路线</a> 叠加层。 Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap.
</span> </span>
</div> </div>
@@ -18,7 +18,7 @@ title: 请求海拔数据
<DocsNote> <DocsNote>
海拔数据来自 <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a> Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>.
查阅 <a href="https://mapterhorn.com/attribution/" target="_blank">官方文档</a> 以了解海拔数据来源及其准确度。 You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>.
</DocsNote> </DocsNote>
+2 -2
View File
@@ -210,7 +210,7 @@ type RoutingProfile =
| 'motorcycle' | 'motorcycle'
| 'water' | 'water'
| 'railway'; | 'railway';
type TerrainSource = 'mapterhorn'; type TerrainSource = 'maptiler-dem' | 'mapterhorn';
type StreetViewSource = 'mapillary' | 'google'; type StreetViewSource = 'mapillary' | 'google';
export const settings = { export const settings = {
@@ -308,7 +308,7 @@ export const settings = {
terrainSource: new Setting<TerrainSource>( terrainSource: new Setting<TerrainSource>(
'terrainSource', 'terrainSource',
defaultTerrainSource, defaultTerrainSource,
getValueValidator(['mapterhorn'], defaultTerrainSource) getValueValidator(['maptiler-dem', 'mapterhorn'], defaultTerrainSource)
), ),
directionMarkers: new Setting('directionMarkers', false), directionMarkers: new Setting('directionMarkers', false),
distanceMarkers: new Setting('distanceMarkers', false), distanceMarkers: new Setting('distanceMarkers', false),
+10 -8
View File
@@ -7,6 +7,7 @@ import maplibregl from 'maplibre-gl';
import { pointToTile, pointToTileFraction } from '@mapbox/tilebelt'; import { pointToTile, pointToTileFraction } from '@mapbox/tilebelt';
import type { GPXStatisticsTree } from '$lib/logic/statistics-tree'; import type { GPXStatisticsTree } from '$lib/logic/statistics-tree';
import { ListTrackSegmentItem } from '$lib/components/file-list/file-list'; import { ListTrackSegmentItem } from '$lib/components/file-list/file-list';
import { PUBLIC_MAPTILER_KEY } from '$env/static/public';
export function cn(...inputs: ClassValue[]) { export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs)); return twMerge(clsx(inputs));
@@ -100,7 +101,7 @@ export function getClosestTrackSegments(
export function getElevation( export function getElevation(
points: (TrackPoint | Waypoint | Coordinates)[], points: (TrackPoint | Waypoint | Coordinates)[],
ELEVATION_ZOOM: number = 12, ELEVATION_ZOOM: number = 13,
tileSize = 512 tileSize = 512
): Promise<number[]> { ): Promise<number[]> {
let coordinates = points.map((point) => let coordinates = points.map((point) =>
@@ -121,9 +122,10 @@ export function getElevation(
}; };
let promises = uniqueTiles.map((tile) => let promises = uniqueTiles.map((tile) =>
fetch(`https://tiles.gpx.studio/mapterhorn/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp`, { fetch(
cache: 'force-cache', `https://api.maptiler.com/tiles/terrain-rgb-v2/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp?key=${PUBLIC_MAPTILER_KEY}`,
}) { cache: 'force-cache' }
)
.then((response) => response.blob()) .then((response) => response.blob())
.then( .then(
(blob) => (blob) =>
@@ -178,10 +180,10 @@ export function getElevation(
_y + (_y + 1 == tileSize ? 0 : 1) _y + (_y + 1 == tileSize ? 0 : 1)
); );
let ele00 = -32768 + p00[0] * 256 + p00[1] + p00[2] / 256; let ele00 = -10000 + (p00[0] * 256 * 256 + p00[1] * 256 + p00[2]) * 0.1;
let ele01 = -32768 + p01[0] * 256 + p01[1] + p01[2] / 256; let ele01 = -10000 + (p01[0] * 256 * 256 + p01[1] * 256 + p01[2]) * 0.1;
let ele10 = -32768 + p10[0] * 256 + p10[1] + p10[2] / 256; let ele10 = -10000 + (p10[0] * 256 * 256 + p10[1] * 256 + p10[2]) * 0.1;
let ele11 = -32768 + p11[0] * 256 + p11[1] + p11[2] / 256; let ele11 = -10000 + (p11[0] * 256 * 256 + p11[1] * 256 + p11[2]) * 0.1;
return ( return (
ele00 * (1 - dx) * (1 - dy) + ele00 * (1 - dx) * (1 - dy) +
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suïssa", "switzerland": "Suïssa",
"united_kingdom": "Regne Unit", "united_kingdom": "Regne Unit",
"united_states": "Estats Units", "united_states": "Estats Units",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Švýcarsko", "switzerland": "Švýcarsko",
"united_kingdom": "Velká Británie", "united_kingdom": "Velká Británie",
"united_states": "Spojené státy", "united_states": "Spojené státy",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Schweiz", "switzerland": "Schweiz",
"united_kingdom": "Großbritannien", "united_kingdom": "Großbritannien",
"united_states": "USA", "united_states": "USA",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+6 -5
View File
@@ -235,7 +235,7 @@
}, },
"elevation": { "elevation": {
"button": "Request elevation data", "button": "Request elevation data",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.", "help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help_no_selection": "Select a file item to request elevation data." "help_no_selection": "Select a file item to request elevation data."
}, },
"waypoint": { "waypoint": {
@@ -304,10 +304,10 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "maptilerStreets": "MapTiler Streets",
"libertySatellite": "Liberty Satellite", "maptilerTopo": "MapTiler Topo",
"osm": "OpenMapTiles OSM", "maptilerOutdoors": "MapTiler Outdoors",
"osmTopo": "OpenMapTiles OSM Topo", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
@@ -388,6 +388,7 @@
"tram-stop": "Tram Stop", "tram-stop": "Tram Stop",
"bus-stop": "Bus Stop", "bus-stop": "Bus Stop",
"ferry": "Ferry", "ferry": "Ferry",
"maptiler-dem": "MapTiler DEM",
"mapterhorn": "Mapterhorn" "mapterhorn": "Mapterhorn"
} }
}, },
+3 -5
View File
@@ -235,7 +235,7 @@
}, },
"elevation": { "elevation": {
"button": "Solicitar datos de desnivel", "button": "Solicitar datos de desnivel",
"help": "La solicitud de datos de elevación borrará los datos de elevación existentes, si los hay, y los reemplazará con datos de Mapterhorn.", "help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"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": {
@@ -304,10 +304,8 @@
"switzerland": "Suiza", "switzerland": "Suiza",
"united_kingdom": "Reino Unido", "united_kingdom": "Reino Unido",
"united_states": "Estados Unidos", "united_states": "Estados Unidos",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suitza", "switzerland": "Suitza",
"united_kingdom": "Erresuma Batua", "united_kingdom": "Erresuma Batua",
"united_states": "Ameriketako Estatu Batuak", "united_states": "Ameriketako Estatu Batuak",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Sveitsi", "switzerland": "Sveitsi",
"united_kingdom": "Iso-Britannia", "united_kingdom": "Iso-Britannia",
"united_states": "Yhdysvallat", "united_states": "Yhdysvallat",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suisse", "switzerland": "Suisse",
"united_kingdom": "Royaume-Uni", "united_kingdom": "Royaume-Uni",
"united_states": "États-Unis", "united_states": "États-Unis",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Svájc", "switzerland": "Svájc",
"united_kingdom": "Anglia", "united_kingdom": "Anglia",
"united_states": "Amerika", "united_states": "Amerika",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Swiss", "switzerland": "Swiss",
"united_kingdom": "Britania Raya", "united_kingdom": "Britania Raya",
"united_states": "Amerika Serikat", "united_states": "Amerika Serikat",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Svizzera", "switzerland": "Svizzera",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "Stati Uniti", "united_states": "Stati Uniti",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "스위스", "switzerland": "스위스",
"united_kingdom": "영국", "united_kingdom": "영국",
"united_states": "미국", "united_states": "미국",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "오픈스트리트맵", "openStreetMap": "오픈스트리트맵",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Šveicarija", "switzerland": "Šveicarija",
"united_kingdom": "Jungtinė Karalystė", "united_kingdom": "Jungtinė Karalystė",
"united_states": "Jungtinės Amerikos Valstijos", "united_states": "Jungtinės Amerikos Valstijos",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+3 -5
View File
@@ -235,7 +235,7 @@
}, },
"elevation": { "elevation": {
"button": "Hoogtegegevens opvragen", "button": "Hoogtegegevens opvragen",
"help": "Het opvragen van hoogtegegevens verwijdert de bestaande hoogtegegevens, indien aanwezig, en vervangt deze door gegevens van Mapterhorn.", "help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help_no_selection": "Selecteer een bestand om hoogte gegevens op te vragen." "help_no_selection": "Selecteer een bestand om hoogte gegevens op te vragen."
}, },
"waypoint": { "waypoint": {
@@ -304,10 +304,8 @@
"switzerland": "Zwitserland", "switzerland": "Zwitserland",
"united_kingdom": "Verenigd Koninkrijk", "united_kingdom": "Verenigd Koninkrijk",
"united_states": "Verenigde Staten", "united_states": "Verenigde Staten",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satelliet", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Sveits", "switzerland": "Sveits",
"united_kingdom": "Storbritannia", "united_kingdom": "Storbritannia",
"united_states": "USA", "united_states": "USA",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Szwajcaria", "switzerland": "Szwajcaria",
"united_kingdom": "Wielka Brytania", "united_kingdom": "Wielka Brytania",
"united_states": "Stany Zjednoczone", "united_states": "Stany Zjednoczone",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suíça", "switzerland": "Suíça",
"united_kingdom": "Reino Unido", "united_kingdom": "Reino Unido",
"united_states": "Estados Unidos", "united_states": "Estados Unidos",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suíça", "switzerland": "Suíça",
"united_kingdom": "Reino Unido", "united_kingdom": "Reino Unido",
"united_states": "Estados Unidos", "united_states": "Estados Unidos",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+24 -26
View File
@@ -28,7 +28,7 @@
"undo": "Anulează", "undo": "Anulează",
"redo": "Refă", "redo": "Refă",
"delete": "Șterge", "delete": "Șterge",
"delete_all": "Șterge tot", "delete_all": "Delete all",
"select_all": "Selectează tot", "select_all": "Selectează tot",
"view": "Vizualizare", "view": "Vizualizare",
"elevation_profile": "Profil de altitudine", "elevation_profile": "Profil de altitudine",
@@ -36,7 +36,7 @@
"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": "Ecran complet", "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",
@@ -62,46 +62,46 @@
"more": "Mai multe...", "more": "Mai multe...",
"donate": "Donați", "donate": "Donați",
"ctrl": "Ctrl", "ctrl": "Ctrl",
"click": "Clic", "click": "Click",
"drag": "Drag", "drag": "Drag",
"right_click_drag": "Right-click drag", "right_click_drag": "Right-click drag",
"metadata": { "metadata": {
"button": "Informații...", "button": "Info...",
"name": "Nume", "name": "Name",
"description": "Descriere", "description": "Descriere",
"save": "Salvează" "save": "Save"
}, },
"style": { "style": {
"button": "Aspect...", "button": "Aspect...",
"color": "Culoare", "color": "Color",
"opacity": "Opacitate", "opacity": "Opacitate",
"width": "Lățime" "width": "Width"
}, },
"hide": "Ascunde", "hide": "Ascunde",
"unhide": "Dezvăluie", "unhide": "Dezvăluie",
"center": "Centrează", "center": "Center",
"open_in": "Deschide în", "open_in": "Open in",
"copy_coordinates": "Copiază coordonatele", "copy_coordinates": "Copiază coordonatele",
"edit_osm": "Editează în OpenStreetMap" "edit_osm": "Edit in OpenStreetMap"
}, },
"toolbar": { "toolbar": {
"routing": { "routing": {
"tooltip": "Planifică sau editează o rută", "tooltip": "Planifică sau editează o rută",
"activity": "Activitate", "activity": "Activitate",
"use_routing": "Rutare", "use_routing": "Rutare",
"use_routing_tooltip": "Conectează puncte de ancorare prin rețeaua rutieră sau în linie dreaptă dacă este dezactivată", "use_routing_tooltip": "Connect anchor points via road network, or in a straight line if disabled",
"allow_private": "Permite drumuri private", "allow_private": "Allow private roads",
"reverse": { "reverse": {
"button": "Inversează", "button": "Reverse",
"tooltip": "Reverse the direction of the route" "tooltip": "Reverse the direction of the route"
}, },
"route_back_to_start": { "route_back_to_start": {
"button": "Înapoi la punctul de plecare", "button": "Back to start",
"tooltip": "Conectează ultimul punct al rutei cu punctul de plecare" "tooltip": "Connect the last point of the route with the starting point"
}, },
"round_trip": { "round_trip": {
"button": "Călătorie dus-întors", "button": "Round trip",
"tooltip": "Întoarce-te la punctul de plecare pe aceeași rută" "tooltip": "Return to the starting point by the same route"
}, },
"start_loop_here": "Start loop here", "start_loop_here": "Start loop here",
"help_no_file": "Select a trace to use the routing tool, or click on the map to start creating a new route.", "help_no_file": "Select a trace to use the routing tool, or click on the map to start creating a new route.",
@@ -120,7 +120,7 @@
"unknown": "Necunoscut", "unknown": "Necunoscut",
"paved": "Asfaltat", "paved": "Asfaltat",
"unpaved": "Unpaved", "unpaved": "Unpaved",
"asphalt": "Asfalt", "asphalt": "Asphalt",
"concrete": "Concrete", "concrete": "Concrete",
"cobblestone": "Pavaj", "cobblestone": "Pavaj",
"paving_stones": "Pavaj din pietre", "paving_stones": "Pavaj din pietre",
@@ -140,11 +140,11 @@
"grass": "Iarbă", "grass": "Iarbă",
"grass_paver": "Pavaj cu iarbă", "grass_paver": "Pavaj cu iarbă",
"clay": "Clay", "clay": "Clay",
"stone": "Piatră" "stone": "Stone"
}, },
"highway": { "highway": {
"unknown": "Necunoscut", "unknown": "Unknown",
"motorway": "Autostradă", "motorway": "Highway",
"motorway_link": "Highway link", "motorway_link": "Highway link",
"trunk": "Primary road", "trunk": "Primary road",
"trunk_link": "Primary road link", "trunk_link": "Primary road link",
@@ -304,10 +304,8 @@
"switzerland": "Elveția", "switzerland": "Elveția",
"united_kingdom": "Regatul Unit", "united_kingdom": "Regatul Unit",
"united_states": "Statele Unite ale Americii", "united_states": "Statele Unite ale Americii",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Швейцария", "switzerland": "Швейцария",
"united_kingdom": "Великобритания", "united_kingdom": "Великобритания",
"united_states": "Соединенные Штаты Америки", "united_states": "Соединенные Штаты Америки",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Švajcarska", "switzerland": "Švajcarska",
"united_kingdom": "Ujedinjeno Kraljevstvo", "united_kingdom": "Ujedinjeno Kraljevstvo",
"united_states": "Sjеdinjеnе Američke Državе", "united_states": "Sjеdinjеnе Američke Državе",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Schweiz", "switzerland": "Schweiz",
"united_kingdom": "Storbritannien", "united_kingdom": "Storbritannien",
"united_states": "USA", "united_states": "USA",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "İsviçre", "switzerland": "İsviçre",
"united_kingdom": "Birleşik Krallık", "united_kingdom": "Birleşik Krallık",
"united_states": "Birlişik Devletler", "united_states": "Birlişik Devletler",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Швейцарія", "switzerland": "Швейцарія",
"united_kingdom": "Велика Британія\nВеликобританія", "united_kingdom": "Велика Британія\nВеликобританія",
"united_states": "Сполучені Штати", "united_states": "Сполучені Штати",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+391 -393
View File
@@ -4,310 +4,308 @@
"app_title": "app", "app_title": "app",
"embed_title": "", "embed_title": "",
"help_title": "", "help_title": "",
"404_title": "無法找到相關頁面", "404_title": "page not found",
"description": "。" "description": "。"
}, },
"menu": { "menu": {
"new": "新建", "new": "New",
"new_file": "新增檔案", "new_file": "New file",
"new_track": "新增路徑", "new_track": "New track",
"new_segment": "新增路段", "new_segment": "New segment",
"open": "開啟...", "open": "Open...",
"duplicate": "建立副本", "duplicate": "Duplicate",
"copy": "複製", "copy": "Copy",
"paste": "貼上", "paste": "Paste",
"cut": "剪下", "cut": "剪下",
"export": "匯出……", "export": "匯出……",
"export_all": "匯出所有……", "export_all": "匯出所有……",
"export_options": "匯出選項", "export_options": "Export options",
"support_message": "本工具免費使用,但運行此網站有成本。若您經常使用,請考慮捐贈以支持我們。非常感謝!", "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": "幫助網站保持免費", "support_button": "Help keep the website free",
"download_file": "下載檔案", "download_file": "Download file",
"download_files": "下載所有檔案", "download_files": "Download files",
"edit": "編輯", "edit": "Edit",
"undo": "復原", "undo": "Undo",
"redo": "重做", "redo": "Redo",
"delete": "刪除", "delete": "Delete",
"delete_all": "全部刪除", "delete_all": "Delete all",
"select_all": "全選", "select_all": "Select all",
"view": "顯示", "view": "View",
"elevation_profile": "海拔剖面圖", "elevation_profile": "Elevation profile",
"tree_file_view": "檔案樹狀圖", "tree_file_view": "File tree",
"switch_basemap": "切換到上一個底圖", "switch_basemap": "Switch to previous basemap",
"toggle_overlays": "切換疊加層", "toggle_overlays": "Toggle overlays",
"toggle_3d": "切換三維檢視", "toggle_3d": "Toggle 3D",
"fullscreen": "全螢幕", "fullscreen": "Full screen",
"settings": "設定", "settings": "Settings",
"distance_units": "距離單位", "distance_units": "Distance units",
"metric": "公制", "metric": "Metric",
"imperial": "英制", "imperial": "Imperial",
"nautical": "航海", "nautical": "Nautical",
"velocity_units": "速度單位", "velocity_units": "Velocity units",
"temperature_units": "溫度單位", "temperature_units": "Temperature units",
"celsius": "攝氏", "celsius": "Celsius",
"fahrenheit": "華氏", "fahrenheit": "Fahrenheit",
"language": "語言", "language": "Language",
"mode": "主題", "mode": "Theme",
"system": "系統", "system": "System",
"light": "淺色", "light": "Light",
"dark": "深色", "dark": "Dark",
"street_view_source": "街景原始檔", "street_view_source": "街景原始檔",
"mapillary": "Mapillary", "mapillary": "Mapillary",
"google": "Google", "google": "Google",
"toggle_street_view": "街景", "toggle_street_view": "Street view",
"layers": "地圖圖層...", "layers": "Map layers...",
"distance_markers": "距離標記", "distance_markers": "Distance markers",
"direction_markers": "方向箭頭", "direction_markers": "Direction arrows",
"help": "幫助", "help": "Help",
"more": "更多...", "more": "More...",
"donate": "捐贈", "donate": "Donate",
"ctrl": "Ctrl", "ctrl": "Ctrl",
"click": "點選", "click": "Click",
"drag": "拖動", "drag": "Drag",
"right_click_drag": "右鍵拖動", "right_click_drag": "Right-click drag",
"metadata": { "metadata": {
"button": "資訊...", "button": "Info...",
"name": "名稱", "name": "Name",
"description": "說明", "description": "Description",
"save": "保存" "save": "Save"
}, },
"style": { "style": {
"button": "外觀...", "button": "Appearance...",
"color": "配色", "color": "Color",
"opacity": "透明度", "opacity": "Opacity",
"width": "闊度" "width": "Width"
}, },
"hide": "隱藏", "hide": "Hide",
"unhide": "取消隱藏", "unhide": "Unhide",
"center": "置中", "center": "Center",
"open_in": "打開於", "open_in": "Open in",
"copy_coordinates": "複製座標", "copy_coordinates": "Copy coordinates",
"edit_osm": " OpenStreetMap 中編輯" "edit_osm": "Edit in OpenStreetMap"
}, },
"toolbar": { "toolbar": {
"routing": { "routing": {
"tooltip": "規劃或編輯路線", "tooltip": "Plan or edit a route",
"activity": "活動", "activity": "Activity",
"use_routing": "路線", "use_routing": "Routing",
"use_routing_tooltip": "通過路網連接錨點,若停用用直線連接", "use_routing_tooltip": "Connect anchor points via road network, or in a straight line if disabled",
"allow_private": "允許私家路", "allow_private": "Allow private roads",
"reverse": { "reverse": {
"button": "反向", "button": "Reverse",
"tooltip": "反轉路線方向" "tooltip": "Reverse the direction of the route"
}, },
"route_back_to_start": { "route_back_to_start": {
"button": "返回起點", "button": "Back to start",
"tooltip": "連接路線的起點與終點" "tooltip": "Connect the last point of the route with the starting point"
}, },
"round_trip": { "round_trip": {
"button": "往返路線", "button": "Round trip",
"tooltip": "按原路返回起點" "tooltip": "Return to the starting point by the same route"
}, },
"start_loop_here": "在此開始循環", "start_loop_here": "Start loop here",
"help_no_file": "選擇軌跡進行編輯,或在地圖上點選以建立新路線。", "help_no_file": "Select a trace to use the routing tool, or click on the map to start creating a new route.",
"help": "點選地圖以加入新錨點,或拖動現有錨點以改變路線。", "help": "Click on the map to add a new anchor point, or drag existing ones to change the route.",
"activities": { "activities": {
"bike": "單車", "bike": "Bike",
"racing_bike": "公路單車", "racing_bike": "Road bike",
"gravel_bike": "礫石單車", "gravel_bike": "Gravel bike",
"mountain_bike": "越野單車", "mountain_bike": "Mountain bike",
"foot": "跑步/遠足", "foot": "Run/hike",
"motorcycle": "電單車", "motorcycle": "Motorcycle",
"water": "水上活動", "water": "Water",
"railway": "鐵路" "railway": "Railway"
}, },
"surface": { "surface": {
"unknown": "未知", "unknown": "Unknown",
"paved": "鋪砌路面", "paved": "Paved",
"unpaved": "未鋪砌路面", "unpaved": "Unpaved",
"asphalt": "瀝青路", "asphalt": "Asphalt",
"concrete": "混凝土", "concrete": "Concrete",
"cobblestone": "鵝卵石", "cobblestone": "Cobblestone",
"paving_stones": "鋪路石", "paving_stones": "鋪路石",
"sett": "石板", "sett": "石板",
"metal": "金屬", "metal": "Metal",
"wood": "木材", "wood": "Wood",
"compacted": "壓實的礫石", "compacted": "Compacted gravel",
"fine_gravel": "細礫", "fine_gravel": "Fine gravel",
"gravel": "砂礫", "gravel": "Gravel",
"pebblestone": "卵石", "pebblestone": "Pebblestone",
"rock": "岩石", "rock": "Rock",
"dirt": "泥土", "dirt": "Dirt",
"ground": "地面", "ground": "Ground",
"earth": "土地", "earth": "Earth",
"mud": "泥地", "mud": "Mud",
"sand": "沙粒", "sand": "Sand",
"grass": "草地", "grass": "Grass",
"grass_paver": "草坪", "grass_paver": "Grass paver",
"clay": "黏土", "clay": "Clay",
"stone": "石頭" "stone": "Stone"
}, },
"highway": { "highway": {
"unknown": "未知類型", "unknown": "Unknown",
"motorway": "高速公路", "motorway": "Highway",
"motorway_link": "高速公路引道", "motorway_link": "Highway link",
"trunk": "快速公路", "trunk": "Primary road",
"trunk_link": "快速公路連接路", "trunk_link": "Primary road link",
"primary": "快速公路", "primary": "Primary road",
"primary_link": "快速公路連接路", "primary_link": "Primary road link",
"secondary": "主要道路", "secondary": "Secondary road",
"secondary_link": "主要道路連接路", "secondary_link": "Secondary road link",
"tertiary": "支路", "tertiary": "Tertiary road",
"tertiary_link": "支路連接路", "tertiary_link": "Tertiary road link",
"unclassified": "小路", "unclassified": "Minor road",
"residential": "居住區道路", "residential": "Residential road",
"living_street": "住宅街道", "living_street": "Living street",
"service": "輔助道路", "service": "Service road",
"track": "小徑(未鋪設道路)", "track": "Track",
"footway": "", "footway": "Footway",
"path": "小徑", "path": "Path",
"pedestrian": "行人路", "pedestrian": "Pedestrian",
"cycleway": "單車徑", "cycleway": "Cycleway",
"steps": "石級", "steps": "Steps",
"road": "道路", "road": "Road",
"bridleway": "馬道", "bridleway": "Horseriding path",
"platform": "停靠站台", "platform": "Platform",
"raceway": "競賽賽道", "raceway": "競賽賽道",
"rest_area": "停車區", "rest_area": "Rest area",
"abandoned": "廢棄道路", "abandoned": "Abandoned",
"services": "服務區", "services": "Services",
"corridor": "走廊", "corridor": "Corridor",
"bus_stop": "巴士站", "bus_stop": "Bus stop",
"busway": "巴士線", "busway": "Busway",
"elevator": "升降機", "elevator": "Elevator",
"via_ferrata": "鐵鎖攀岩", "via_ferrata": "Via ferrata",
"proposed": "未興建的道路", "proposed": "已規劃但未興建的道路",
"construction": "興建中的道路" "construction": "Road under construction"
}, },
"sac_scale": { "sac_scale": {
"hiking": "遠足", "hiking": "遠足",
"mountain_hiking": "登山遠足", "mountain_hiking": "登山遠足",
"demanding_mountain_hiking": "高難度登山路徑 (T3級)", "demanding_mountain_hiking": "Demanding mountain hiking",
"alpine_hiking": "高山遠足", "alpine_hiking": "高山遠足",
"demanding_alpine_hiking": "高難度登山路徑 (T5級)", "demanding_alpine_hiking": "Demanding alpine hiking",
"difficult_alpine_hiking": "高難度登山路徑 (T6級)" "difficult_alpine_hiking": "Difficult alpine hiking"
}, },
"mtb_scale": "越野單車徑難度分級", "mtb_scale": "MTB scale",
"error": { "error": {
"from": "起點離最近的道路太遠", "from": "The start point is too far from the nearest road",
"via": "途徑點離最近的道路太遠", "via": "The via point is too far from the nearest road",
"to": "終點離最近的道路太遠", "to": "The end point is too far from the nearest road",
"distance": "起點到終點的距離太遠", "distance": "The end point is too far from the start point",
"connection": "找不到連接途徑點的路線", "connection": "No connection found between the points",
"timeout": "軌跡計算耗時太長,請嘗試減少點與點的距離" "timeout": "Route calculation took too long, try adding points closer together"
} }
}, },
"scissors": { "scissors": {
"tooltip": "裁剪或拆分", "tooltip": "Crop or split",
"crop": "裁剪", "crop": "Crop",
"split_as": "將軌跡拆分為", "split_as": "Split the trace into",
"help_invalid_selection": "須先選擇要裁剪或拆分的軌跡。", "help_invalid_selection": "Select a trace to crop or split.",
"help": "移動滑塊以確認裁剪範圍,或點選軌跡上的分割標記以拆分。" "help": "Use the slider to crop the trace, or split it by clicking on one of the split markers or on the trace itself."
}, },
"time": { "time": {
"tooltip": "管理時間資料", "tooltip": "Manage time data",
"start": "開始", "start": "Start",
"end": "結束", "end": "End",
"total_time": "移動時間", "total_time": "Moving time",
"pick_date": "選擇日期", "pick_date": "Pick a date",
"artificial": "建立實際時間資料", "artificial": "Create realistic time data",
"update": "更新時間資料", "update": "Update time data",
"help": "使用表單設定新的時間資料。", "help": "Use the form to set new time data.",
"help_invalid_selection": "選擇一個軌跡來管理時間資料。" "help_invalid_selection": "Select a single trace to manage its time data."
}, },
"merge": { "merge": {
"merge_traces": "合併為一條連續軌跡", "merge_traces": "Connect the traces",
"merge_contents": "合併但保持軌跡獨立", "merge_contents": "Merge the contents and keep the traces disconnected",
"merge_selection": "合併", "merge_selection": "Merge selection",
"remove_gaps": "刪除軌跡的時間間隔", "remove_gaps": "Remove time gaps between traces",
"tooltip": "合併項目", "tooltip": "Merge items together",
"help_merge_traces": "連接所選內容並建立一個連續的軌跡。", "help_merge_traces": "Connecting the selected traces will create a single continuous trace.",
"help_cannot_merge_traces": "須先選擇多個檔案以合併。", "help_cannot_merge_traces": "Your selection must contain several traces to connect them.",
"help_merge_contents": "合併所選內容並將結果儲存於第一個檔案。", "help_merge_contents": "Merging the contents of the selected items will group all the contents inside the first item.",
"help_cannot_merge_contents": "須先選擇多個檔案以合併。", "help_cannot_merge_contents": "Your selection must contain several items to merge their contents.",
"selection_tip": "可使用 {KEYBOARD_SHORTCUT} 新增項目至選擇中。" "selection_tip": "Tip: use {KEYBOARD_SHORTCUT} to add items to the selection."
}, },
"extract": { "extract": {
"tooltip": "提取為多個獨立項目", "tooltip": "Extract contents to separate items",
"button": "提取", "button": "Extract",
"help": "該操作將為每個軌跡建立一個單獨的檔案。", "help": "Extracting the contents of the selected items will create a separate item for each of their contents.",
"help_invalid_selection": "須先選擇包含多個軌跡的檔案以提取。" "help_invalid_selection": "Your selection must contain items with multiple traces to extract them."
}, },
"elevation": { "elevation": {
"button": "請求海拔資料", "button": "Request elevation data",
"help": "請求成功後將移除原有的海拔資料,並使用 Mapterhorn 的海拔資料替換原有資料。", "help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help_no_selection": "選擇要請求海拔資料的檔案。" "help_no_selection": "Select a file item to request elevation data."
}, },
"waypoint": { "waypoint": {
"tooltip": "建立或編輯興趣點", "tooltip": "Create and edit points of interest",
"icon": "圖示", "icon": "Icon",
"link": "連結", "link": "Link",
"longitude": "經度", "longitude": "Longitude",
"latitude": "緯度", "latitude": "Latitude",
"create": "新增興趣點", "create": "Create point of interest",
"add": "將興趣點加入到檔案", "add": "Add point of interest to file",
"help": "通過表單建立新興趣點,或點選現有興趣點以編輯。 點選地圖並填充坐標點,或拖動興趣點以移動坐標。", "help": "Fill in the form to create a new point of interest, or click on an existing one to edit it. Click on the map to fill the coordinates, or drag points of interest to move them.",
"help_no_selection": "選擇檔案以建立或編輯興趣點。" "help_no_selection": "Select a file to create or edit points of interest."
}, },
"reduce": { "reduce": {
"tooltip": "精簡 GPS 點數量", "tooltip": "Reduce the number of GPS points",
"tolerance": "最大間距", "tolerance": "Tolerance",
"number_of_points": "GPS 點數量", "number_of_points": "Number of GPS points",
"button": "簡化", "button": "簡化",
"help": "移動滑塊以調整要保留的 GPS 點數量。", "help": "Use the slider to choose the number of GPS points to keep.",
"help_no_selection": "選擇一個軌跡以減少其 GPS 點的數量。" "help_no_selection": "Select a trace to reduce the number of its GPS points."
}, },
"clean": { "clean": {
"tooltip": "使用矩形選區清除項目", "tooltip": "Clean GPS points and points of interest with a rectangle selection",
"delete_trackpoints": "刪除 GPS 點", "delete_trackpoints": "Delete GPS points",
"delete_waypoints": "刪除興趣點", "delete_waypoints": "Delete points of interest",
"delete_inside": "清除選區內部項目", "delete_inside": "Delete inside selection",
"delete_outside": "清除選區外的項目", "delete_outside": "Delete outside selection",
"button": "刪除", "button": "Delete",
"help": "在地圖上繪製矩形選區以清除。", "help": "Select a rectangle area on the map to remove GPS points and points of interest.",
"help_no_selection": "選擇一個軌跡以清除其 GPS 點和興趣點。" "help_no_selection": "Select a trace to clean GPS points and points of interest."
} }
}, },
"layers": { "layers": {
"settings": "圖層設定", "settings": "Layer settings",
"settings_help": "選擇要在介面中顯示的地圖圖層,或加入自訂圖層,並作出必要調整。", "settings_help": "Select the map layers you want to show in the interface, add custom ones, and adjust their settings.",
"selection": "選擇圖層", "selection": "Layer selection",
"custom_layers": { "custom_layers": {
"title": "自訂圖層", "title": "Custom layers",
"new": "新建自訂圖層", "new": "New custom layer",
"edit": "編輯自訂圖層", "edit": "Edit custom layer",
"urls": "URL", "urls": "URL(s)",
"url_placeholder": "WMTSWMS MapLibre style JSON", "url_placeholder": "WMTS, WMS or MapLibre style JSON",
"max_zoom": "最大縮放等級", "max_zoom": "Max zoom",
"layer_type": "圖層類型", "layer_type": "Layer type",
"basemap": "底圖", "basemap": "Basemap",
"overlay": "疊加層", "overlay": "Overlay",
"create": "新增圖層", "create": "Create layer",
"update": "更新圖層" "update": "Update layer"
}, },
"opacity": "圖層透明度", "opacity": "Overlay opacity",
"terrain": "地形來源", "terrain": "Terrain source",
"label": { "label": {
"basemaps": "底圖", "basemaps": "Basemaps",
"overlays": "疊加層", "overlays": "Overlays",
"custom": "自訂", "custom": "Custom",
"world": "世界", "world": "World",
"countries": "國家/地區", "countries": "Countries",
"belgium": "比利時", "belgium": "Belgium",
"bulgaria": "保加利亞", "bulgaria": "Bulgaria",
"finland": "芬蘭", "finland": "Finland",
"france": "法國", "france": "France",
"new_zealand": "紐西蘭", "new_zealand": "New Zealand",
"norway": "挪威", "norway": "Norway",
"spain": "西班牙", "spain": "Spain",
"sweden": "瑞典", "sweden": "Sweden",
"switzerland": "瑞士", "switzerland": "Switzerland",
"united_kingdom": "英國", "united_kingdom": "United Kingdom",
"united_states": "美國", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
@@ -316,108 +314,108 @@
"utagawaVTT": "UtagawaMTB", "utagawaVTT": "UtagawaMTB",
"linz": "LINZ Topo", "linz": "LINZ Topo",
"linzTopo": "LINZ Topo50", "linzTopo": "LINZ Topo50",
"swisstopoRaster": "swisstopo 柵格", "swisstopoRaster": "swisstopo Raster",
"swisstopoVector": "swisstopo 向量", "swisstopoVector": "swisstopo Vector",
"swisstopoSatellite": "swisstopo 衛星地圖", "swisstopoSatellite": "swisstopo Satellite",
"ignBe": "IGN Topo", "ignBe": "IGN Topo",
"ignFrPlan": "IGN Plan", "ignFrPlan": "IGN Plan",
"ignFrTopo": "IGN Topo", "ignFrTopo": "IGN Topo",
"ignFrScan25": "IGN SCAN25", "ignFrScan25": "IGN SCAN25",
"ignFrSatellite": "IGN 衛星地圖", "ignFrSatellite": "IGN Satellite",
"ignEs": "IGN Topo", "ignEs": "IGN Topo",
"ignEsSatellite": "IGN Satellite", "ignEsSatellite": "IGN Satellite",
"ordnanceSurvey": "Ordnance Survey(英國地形測量局)", "ordnanceSurvey": "Ordnance Survey",
"norwayTopo": "Topografisk Norgeskart 4", "norwayTopo": "Topografisk Norgeskart 4",
"finlandTopo": "Lantmteriverket Terrngkarta", "finlandTopo": "Lantmäteriverket Terrängkarta",
"bgMountains": "BGMountains", "bgMountains": "BGMountains",
"usgs": "USGS", "usgs": "USGS",
"bikerouterGravel": "bikerouter.de Gravel", "bikerouterGravel": "bikerouter.de Gravel",
"cyclOSMlite": "CyclOSM Lite", "cyclOSMlite": "CyclOSM Lite",
"mapterhornHillshade": "Mapterhorn Hillshade", "mapterhornHillshade": "Mapterhorn Hillshade",
"openRailwayMap": "OpenRailwayMap", "openRailwayMap": "OpenRailwayMap",
"swisstopoSlope": "swisstopo 地形", "swisstopoSlope": "swisstopo Slope",
"swisstopoHiking": "swisstopo 遠足", "swisstopoHiking": "swisstopo Hiking",
"swisstopoHikingClosures": "swisstopo 登山封閉路線", "swisstopoHikingClosures": "swisstopo Hiking Closures",
"swisstopoCycling": "swisstopo 單車", "swisstopoCycling": "swisstopo Cycling",
"swisstopoCyclingClosures": "swisstopo 單車封閉路線", "swisstopoCyclingClosures": "swisstopo Cycling Closures",
"swisstopoMountainBike": "swisstopo 越野單車", "swisstopoMountainBike": "swisstopo MTB",
"swisstopoMountainBikeClosures": "swisstopo 越野單車封閉路線", "swisstopoMountainBikeClosures": "swisstopo MTB Closures",
"swisstopoSkiTouring": "swisstopo 滑雪巡遊", "swisstopoSkiTouring": "swisstopo Ski Touring",
"ignFrCadastre": "IGN Cadastre", "ignFrCadastre": "IGN Cadastre",
"ignSlope": "IGN 地形", "ignSlope": "IGN Slope",
"ignSkiTouring": "IGN 滑雪巡遊", "ignSkiTouring": "IGN Ski Touring",
"waymarked_trails": "標記路線", "waymarked_trails": "Waymarked Trails",
"waymarkedTrailsHiking": "遠足", "waymarkedTrailsHiking": "Hiking",
"waymarkedTrailsCycling": "單車", "waymarkedTrailsCycling": "Cycling",
"waymarkedTrailsMTB": "越野單車", "waymarkedTrailsMTB": "MTB",
"waymarkedTrailsSkating": "滑冰", "waymarkedTrailsSkating": "Skating",
"waymarkedTrailsHorseRiding": "騎馬", "waymarkedTrailsHorseRiding": "Horse Riding",
"waymarkedTrailsWinter": "冬季路線", "waymarkedTrailsWinter": "Winter",
"points_of_interest": "興趣點", "points_of_interest": "Points of interest",
"food": "食物", "food": "Food",
"bakery": "麵包店", "bakery": "Bakery",
"food-store": "食品店", "food-store": "Food Store",
"eat-and-drink": "餐飲店", "eat-and-drink": "Eat and Drink",
"amenities": "便利設施", "amenities": "Amenities",
"toilets": "廁所", "toilets": "Toilets",
"water": "飲用水", "water": "Water",
"shower": "淋浴", "shower": "Shower",
"shelter": "庇護所", "shelter": "Shelter",
"cemetery": "墓地", "cemetery": "Cemetery",
"motorized": "汽車和電單車", "motorized": "Cars and Motorcycles",
"fuel-station": "油站", "fuel-station": "Fuel Station",
"parking": "停車場", "parking": "Parking",
"garage": "車庫", "garage": "Garage",
"barrier": "障礙物", "barrier": "Barrier",
"tourism": "旅游", "tourism": "Tourism",
"attraction": "景點", "attraction": "Attraction",
"viewpoint": "觀景台", "viewpoint": "Viewpoint",
"hotel": "酒店", "hotel": "Hotel",
"campsite": "營地", "campsite": "Campsite",
"hut": "小屋", "hut": "Hut",
"picnic": "野餐區", "picnic": "Picnic Area",
"summit": "頂峰", "summit": "Summit",
"pass": "山坳", "pass": "Pass",
"climbing": "攀爬", "climbing": "Climbing",
"bicycle": "單車", "bicycle": "Bicycle",
"bicycle-parking": "單車架", "bicycle-parking": "Bicycle Parking",
"bicycle-rental": "單車出租店", "bicycle-rental": "Bicycle Rental",
"bicycle-shop": "單車店", "bicycle-shop": "Bicycle Shop",
"public-transport": "公共交通", "public-transport": "Public Transport",
"railway-station": "火車站", "railway-station": "Railway Station",
"tram-stop": "電車站", "tram-stop": "Tram Stop",
"bus-stop": "巴士站", "bus-stop": "Bus Stop",
"ferry": "渡口", "ferry": "Ferry",
"mapterhorn": "Mapterhorn" "mapterhorn": "Mapterhorn"
} }
}, },
"chart": { "chart": {
"settings": "海拔剖面圖設定" "settings": "Elevation profile settings"
}, },
"quantities": { "quantities": {
"distance": "距離", "distance": "Distance",
"elevation": "海拔", "elevation": "Elevation",
"elevation_gain_loss": "累計爬升和下降", "elevation_gain_loss": "Elevation gain and loss",
"temperature": "温度", "temperature": "Temperature",
"speed": "速度", "speed": "Speed",
"pace": "配速", "pace": "Pace",
"heartrate": "心率", "heartrate": "Heart rate",
"cadence": "踏頻", "cadence": "Cadence",
"power": "功率", "power": "Power",
"slope": "坡度", "slope": "Slope",
"surface": "路面", "surface": "Surface",
"highway": "類型", "highway": "Category",
"time": "時間", "time": "Time",
"moving": "運動", "moving": "Moving",
"total": "全部", "total": "Total",
"osm_extensions": "OpenStreetMap 資料" "osm_extensions": "OpenStreetMap data"
}, },
"units": { "units": {
"meters": "", "meters": "m",
"feet": "英呎", "feet": "ft",
"kilometers": "公里", "kilometers": "km",
"miles": "英里", "miles": "mi",
"nautical_miles": "海里", "nautical_miles": "nm",
"celsius": "°C", "celsius": "°C",
"fahrenheit": "°F", "fahrenheit": "°F",
"kilometers_per_hour": "km/h", "kilometers_per_hour": "km/h",
@@ -425,90 +423,90 @@
"minutes_per_kilometer": "min/km", "minutes_per_kilometer": "min/km",
"minutes_per_mile": "min/mi", "minutes_per_mile": "min/mi",
"minutes_per_nautical_mile": "min/nm", "minutes_per_nautical_mile": "min/nm",
"knots": "", "knots": "kn",
"heartrate": "bpm", "heartrate": "bpm",
"cadence": "rpm", "cadence": "rpm",
"power": "W" "power": "W"
}, },
"gpx": { "gpx": {
"file": "檔案", "file": "File",
"files": "檔案", "files": "Files",
"track": "軌跡", "track": "Track",
"tracks": "軌跡", "tracks": "Tracks",
"segment": "路段", "segment": "Segment",
"segments": "路段", "segments": "Segments",
"waypoint": "興趣點", "waypoint": "Point of interest",
"waypoints": "興趣點", "waypoints": "Points of interest",
"symbol": { "symbol": {
"alert": "警告", "alert": "Alert",
"anchor": "錨點", "anchor": "Anchor",
"bank": "銀行", "bank": "Bank",
"beach": "海灘", "beach": "Beach",
"bike_trail": "單車徑", "bike_trail": "Bike Trail",
"binoculars": "望遠鏡", "binoculars": "Binoculars",
"bridge": "", "bridge": "Bridge",
"building": "大廈", "building": "Building",
"campground": "營地", "campground": "Campsite",
"car": "車輛", "car": "Car",
"car_repair": "車庫", "car_repair": "Garage",
"convenience_store": "便利店", "convenience_store": "Convenience Store",
"crossing": "交叉路口", "crossing": "Crossing",
"department_store": "百貨店", "department_store": "Department Store",
"drinking_water": "飲用水", "drinking_water": "Water",
"exit": "出口", "exit": "Exit",
"lodge": "小屋", "lodge": "Hut",
"lodging": "住宿", "lodging": "Accommodation",
"forest": "森林", "forest": "Forest",
"gas_station": "油站", "gas_station": "Fuel Station",
"ground_transportation": "地面交通", "ground_transportation": "Ground Transportation",
"hotel": "酒店", "hotel": "Hotel",
"house": "住宅", "house": "House",
"information": "資訊", "information": "Information",
"park": "公園", "park": "Park",
"parking_area": "停車場", "parking_area": "Parking",
"pharmacy": "藥房", "pharmacy": "Pharmacy",
"picnic_area": "野餐區", "picnic_area": "Picnic Area",
"restaurant": "餐廳", "restaurant": "Restaurant",
"restricted_area": "管制區域", "restricted_area": "Restricted Area",
"restroom": "廁所", "restroom": "Toilets",
"road": "道路", "road": "Road",
"scenic_area": "景區", "scenic_area": "Scenic Area",
"shelter": "庇護所", "shelter": "Shelter",
"shopping_center": "購物中心", "shopping_center": "Shopping Center",
"shower": "淋浴", "shower": "Shower",
"summit": "山峰", "summit": "Summit",
"telephone": "電話", "telephone": "Telephone",
"tunnel": "隧道", "tunnel": "Tunnel",
"water_source": "水源" "water_source": "Water Source"
} }
}, },
"homepage": { "homepage": {
"website": "官方網站", "website": "Website",
"home": "首頁", "home": "Home",
"app": "應用程式", "app": "App",
"contact": "聯絡我們", "contact": "Contact",
"reddit": "Reddit", "reddit": "Reddit",
"facebook": "Facebook", "facebook": "Facebook",
"github": "GitHub", "github": "GitHub",
"crowdin": "Crowdin", "crowdin": "Crowdin",
"email": "電郵", "email": "Email",
"contribute": "參與貢獻", "contribute": "Contribute",
"supported_by": "技術支援", "supported_by": "supported by",
"features": "功能", "features": "Features",
"route_planning": "路線規劃", "route_planning": "Route planning",
"route_planning_description": "基於 OpenStreetMap 數據,在直觀的介面中為每項運動建立量身定製的行程。", "route_planning_description": "An intuitive interface to create itineraries tailored to each sport, based on OpenStreetMap data.",
"file_processing": "高級檔案處理", "file_processing": "Advanced file processing",
"file_processing_description": "一系列常見的檔案處理工具,支援對多個檔案同時進行操作。", "file_processing_description": "A suite of tools for performing all common file processing tasks, and which can be applied to multiple files at once.",
"maps": "全球和本地地圖", "maps": "Global and local maps",
"maps_description": "內建大量地圖底圖、疊加圖層和興趣點,用於幫助規劃戶外冒險或可視化成果。", "maps_description": "A large collection of basemaps, overlays and points of interest to help you craft your next outdoor adventure, or visualize your latest achievement.",
"data_visualization": "數據可視化", "data_visualization": "Data visualization",
"data_visualization_description": "可互動的海拔剖面圖,帶有詳細的統計數據,用於分析已記錄的活動和規劃中的目標。", "data_visualization_description": "An interactive elevation profile with detailed statistics to analyze recorded activities and future objectives.",
"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 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.", "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": "Support gpx.studio on Open Collective", "support_button": "Support gpx.studio on Open Collective",
"translate_button": "Help translate the website on Crowdin" "translate_button": "Help translate the website on Crowdin"
+14 -16
View File
@@ -156,7 +156,7 @@
"tertiary_link": "乡道/支路的连接路段", "tertiary_link": "乡道/支路的连接路段",
"unclassified": "小型道路", "unclassified": "小型道路",
"residential": "居住区道路", "residential": "居住区道路",
"living_street": "住宅街道", "living_street": "生活性街道",
"service": "服务性道路", "service": "服务性道路",
"track": "小径(未铺设道路)", "track": "小径(未铺设道路)",
"footway": "步行道路", "footway": "步行道路",
@@ -187,7 +187,7 @@
"demanding_alpine_hiking": "相对简单的攀爬部分,UIAA I-II 级(T5", "demanding_alpine_hiking": "相对简单的攀爬部分,UIAA I-II 级(T5",
"difficult_alpine_hiking": "更长的攀爬部分,UIAA II 级(T6" "difficult_alpine_hiking": "更长的攀爬部分,UIAA II 级(T6"
}, },
"mtb_scale": "山地自行车难度分级", "mtb_scale": "山地地形",
"error": { "error": {
"from": "起点离最近的道路太远", "from": "起点离最近的道路太远",
"via": "途径点离最近的道路太远", "via": "途径点离最近的道路太远",
@@ -222,9 +222,9 @@
"remove_gaps": "删除轨迹间的时间间隔", "remove_gaps": "删除轨迹间的时间间隔",
"tooltip": "合并要素", "tooltip": "合并要素",
"help_merge_traces": "连接所选内容并生成一个连续轨迹。", "help_merge_traces": "连接所选内容并生成一个连续轨迹。",
"help_cannot_merge_traces": "须先选择多个文件以合并", "help_cannot_merge_traces": "须先选择多个文件以合并",
"help_merge_contents": "合并所选内容并将结果存储于第一个文件。", "help_merge_contents": "合并所选内容并将结果存储于第一个文件。",
"help_cannot_merge_contents": "须先选择多个文件以合并", "help_cannot_merge_contents": "须先选择多个文件以合并",
"selection_tip": "可使用 {KEYBOARD_SHORTCUT} 进行多选。" "selection_tip": "可使用 {KEYBOARD_SHORTCUT} 进行多选。"
}, },
"extract": { "extract": {
@@ -235,7 +235,7 @@
}, },
"elevation": { "elevation": {
"button": "请求海拔数据", "button": "请求海拔数据",
"help": "请求成功后将移除原有的海拔数据,并使用 Mapterhorn 的海拔数据替换原有数据。", "help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help_no_selection": "选择要请求海拔数据的文件。" "help_no_selection": "选择要请求海拔数据的文件。"
}, },
"waypoint": { "waypoint": {
@@ -264,8 +264,8 @@
"delete_inside": "清除选区内部要素", "delete_inside": "清除选区内部要素",
"delete_outside": "清除选区外部要素", "delete_outside": "清除选区外部要素",
"button": "删除", "button": "删除",
"help": "在地图上绘制矩形选区以清除", "help": "在地图上绘制矩形选区以清除",
"help_no_selection": "选择一个轨迹以清除其 GPS 点和兴趣点" "help_no_selection": "选择一个轨迹以清除其 GPS 点和兴趣点"
} }
}, },
"layers": { "layers": {
@@ -277,7 +277,7 @@
"new": "新建自定义图层", "new": "新建自定义图层",
"edit": "编辑自定义图层", "edit": "编辑自定义图层",
"urls": "URL(s)", "urls": "URL(s)",
"url_placeholder": "WMTSWMS 或 MapLibre style JSON", "url_placeholder": "WMTSWMS 或 MapLibre style JSON",
"max_zoom": "最大缩放等级", "max_zoom": "最大缩放等级",
"layer_type": "图层类型", "layer_type": "图层类型",
"basemap": "底图", "basemap": "底图",
@@ -304,10 +304,8 @@
"switzerland": "瑞士", "switzerland": "瑞士",
"united_kingdom": "英国", "united_kingdom": "英国",
"united_states": "美国", "united_states": "美国",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
@@ -333,7 +331,7 @@
"usgs": "USGS", "usgs": "USGS",
"bikerouterGravel": "bikerouter.de Gravel", "bikerouterGravel": "bikerouter.de Gravel",
"cyclOSMlite": "CyclOSM Lite", "cyclOSMlite": "CyclOSM Lite",
"mapterhornHillshade": "Mapterhorn Hillshade", "mapterhornHillshade": "山体阴影",
"openRailwayMap": "OpenRailwayMap", "openRailwayMap": "OpenRailwayMap",
"swisstopoSlope": "Swisstopo Slope", "swisstopoSlope": "Swisstopo Slope",
"swisstopoHiking": "Swisstopo Hiking", "swisstopoHiking": "Swisstopo Hiking",
@@ -377,7 +375,7 @@
"hut": "小屋", "hut": "小屋",
"picnic": "野餐区", "picnic": "野餐区",
"summit": "顶峰", "summit": "顶峰",
"pass": "山坳", "pass": "关卡",
"climbing": "攀爬", "climbing": "攀爬",
"bicycle": "自行车", "bicycle": "自行车",
"bicycle-parking": "停车区", "bicycle-parking": "停车区",
@@ -445,7 +443,7 @@
"bank": "银行", "bank": "银行",
"beach": "海滩", "beach": "海滩",
"bike_trail": "自行车道", "bike_trail": "自行车道",
"binoculars": "望远镜", "binoculars": "观察点",
"bridge": "桥", "bridge": "桥",
"building": "建筑物", "building": "建筑物",
"campground": "营地", "campground": "营地",
@@ -504,7 +502,7 @@
"data_visualization": "数据可视化", "data_visualization": "数据可视化",
"data_visualization_description": "可交互的海拔剖面图,带有详细的统计数据,用于分析已记录的活动和规划中的目标。", "data_visualization_description": "可交互的海拔剖面图,带有详细的统计数据,用于分析已记录的活动和规划中的目标。",
"philosophy": "宗旨", "philosophy": "宗旨",
"foss": "免费、无广告且开源", "foss": "免费、 无广告且开源",
"foss_description": "该网站可自由使用,无广告,源代码可在 GitHub 上公开查阅。", "foss_description": "该网站可自由使用,无广告,源代码可在 GitHub 上公开查阅。",
"privacy": "注重隐私", "privacy": "注重隐私",
"privacy_description": "你的 GPX 文件永远不会离开你的浏览器。我们不会跟踪用户的使用行为,也不会收集用户产生的数据。", "privacy_description": "你的 GPX 文件永远不会离开你的浏览器。我们不会跟踪用户的使用行为,也不会收集用户产生的数据。",
@@ -19,8 +19,8 @@
return; return;
} }
embeddingOptions = getMergedEmbeddingOptions(options); embeddingOptions = getMergedEmbeddingOptions(options);
if (embeddingOptions.key === '' && embeddingOptions.basemap === 'satellite') { if (embeddingOptions.key === '' && embeddingOptions.basemap.startsWith('maptiler')) {
embeddingOptions.basemap = 'libertyTopo'; embeddingOptions.basemap = 'openStreetMap';
} }
}); });
</script> </script>
+47
View File
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Vrstva_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 812 212" style="enable-background:new 0 0 812 212;" xml:space="preserve">
<style type="text/css">
.st0{fill:#3A1888;}
.st1{fill:#03A1C4;}
.st2{fill:#05D0DF;}
.st3{fill:#761FE8;}
.st4{fill:#FFAA01;}
.st5{fill:#F1175D;}
.st6{fill:#FB3A1B;}
.st7{fill:#FBC935;}
.st8{fill:#FFFFFF;}
</style>
<g>
<path class="st0" d="M94.3,164.2c9.2,9.2,33.8,34.3,33.8,34.3c-0.1,0.2,24.4-24.5,34.2-34.2l-34.1-34.1L94.3,164.2z"/>
<path class="st1" d="M128.3,130.2l34.1,34.1c0.1-0.1,0.1-0.1,0.2-0.2l34-34L162.5,96L128.3,130.2z"/>
<path class="st2" d="M196.6,130.1L196.6,130.1c18.9-18.9,18.9-49.4,0.1-68.3L162.5,96L196.6,130.1z"/>
<path class="st3" d="M94.1,96l-34,34c0,0,0,0,0,0l34.1,34.1c0,0,0,0,0.1,0.1l34-34L94.1,96z"/>
<path class="st4" d="M128.3,61.8L162.5,96l34.2-34.2c0,0,0,0-0.1-0.1l-34.1-34.1c0,0,0,0,0,0L128.3,61.8z"/>
<path class="st5" d="M60,61.9c-18.7,18.9-18.6,49.3,0.1,68.1l34-34L60,61.9z"/>
<path class="st6" d="M128.3,61.8L94.2,27.7l-34,34c-0.1,0.1-0.1,0.1-0.2,0.2L94.1,96L128.3,61.8z"/>
<path class="st7" d="M162.5,27.6c-18.9-18.8-49.4-18.8-68.2,0l-0.1,0.1l34.1,34.1L162.5,27.6z"/>
</g>
<path class="st8" d="M303.8,138.6v-34.9c0-8.6-4.5-16.4-13.3-16.4c-8.7,0-13.9,7.8-13.9,16.4v34.9h-16.1V73.4h14.9l1.2,7.9
c3.4-6.6,11-9,17.2-9c7.8,0,15.6,3.2,19.3,12.2c5.8-9.2,13.3-11.9,21.8-11.9c18.5,0,27.6,11.4,27.6,30.9v35.1h-16.1v-35.1
c0-8.6-3.6-15.9-12.3-15.9c-8.7,0-14.1,7.5-14.1,16.1v34.9H303.8z"/>
<path class="st8" d="M430.5,73.5h15.5v65.1h-15.2l-0.8-9.5c-3.7,7.7-13.9,11.4-21.1,11.5c-19.3,0.1-33.6-11.8-33.6-34.6
c0-22.5,14.9-34.2,34-34.1c8.7,0,17,4.1,20.7,10.6L430.5,73.5z M391.4,106c0,12.4,8.6,19.8,19.3,19.8c25.4,0,25.4-39.5,0-39.5
C399.9,86.3,391.4,93.6,391.4,106z"/>
<path class="st8" d="M459.5,165.8V73.5h15.1l1.1,9c5-7.3,13.7-10.4,21.1-10.4c20.1,0,33.4,14.9,33.4,34.1c0,19-12,34.1-32.9,34.1
c-6.9,0-17-2.1-21.7-9.3v34.9H459.5z M514.1,106.1c0-10.2-6.9-18.5-18.5-18.5c-11.6,0-18.5,8.3-18.5,18.5c0,10.2,7.5,18.5,18.5,18.5
C506.6,124.6,514.1,116.3,514.1,106.1z"/>
<path class="st8" d="M559,53.7v19.7h22.2v5.4H559v39.8c0,8.8,1.9,15.1,12,15.1c3.2,0,6.7-1.1,10-2.6l2.2,5.3
c-4.1,2-8.2,3.3-12.3,3.3c-13.9,0-18.4-8.2-18.4-21V78.8h-13.9v-5.4h13.9v-19L559,53.7z"/>
<path class="st8" d="M604.7,52.1c0,6.9-10.4,6.9-10.4,0C594.3,45.2,604.7,45.2,604.7,52.1z M596.1,73.1v65.5h6.5V73.1H596.1z"/>
<path class="st8" d="M627.6,46.2v92.5h-6.5V46.2H627.6z"/>
<path class="st8" d="M730.2,73.4l0.3,11.6c4.1-8.9,13.3-12.3,21.7-12.3c4.9-0.1,9.6,1.2,14,3.8l-2.9,5.3c-3.4-2.1-7.3-3-11.1-3
c-12.2,0.1-21.5,9.9-21.5,21.8v38h-6.5V73.4H730.2z"/>
<g>
<path class="st8" d="M675.1,134.7c-11.5,0-21.4-7.2-25.5-17.4l0,0l0,0c0,0,0,0,0,0l52.8-14c0,0,0,0,0,0.1l5.6-1.5
c-2.3-16.5-16.2-29.3-33-29.3c-18.4,0-33.3,15.2-33.3,34c0,18.8,14.9,34,33.3,34c13.8,0,25.6-8.5,30.6-20.7l-5.3-2.3
C696.2,127.6,686.4,134.7,675.1,134.7z M647.5,106.6c0-15.5,12.3-28.1,27.5-28.1c11.9,0,22,7.7,25.9,18.5L647.9,111
C647.6,109.5,647.5,108.1,647.5,106.6z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

+45
View File
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Vrstva_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 812 212" style="enable-background:new 0 0 812 212;" xml:space="preserve">
<style type="text/css">
.st0{fill:#3A1888;}
.st1{fill:#03A1C4;}
.st2{fill:#05D0DF;}
.st3{fill:#761FE8;}
.st4{fill:#FFAA01;}
.st5{fill:#F1175D;}
.st6{fill:#FB3A1B;}
.st7{fill:#FBC935;}
.st8{fill:#333359;}
</style>
<path class="st0" d="M94.3,164.2c9.2,9.2,33.8,34.3,33.8,34.3c-0.1,0.2,24.4-24.5,34.2-34.2l-34.1-34.1L94.3,164.2z"/>
<path class="st1" d="M128.3,130.2l34.1,34.1c0.1-0.1,0.1-0.1,0.2-0.2l34-34L162.5,96L128.3,130.2z"/>
<path class="st2" d="M196.6,130.1L196.6,130.1c18.9-18.9,18.9-49.4,0.1-68.3L162.5,96L196.6,130.1z"/>
<path class="st3" d="M94.1,96l-34,34c0,0,0,0,0,0l34.1,34.1c0,0,0,0,0.1,0.1l34-34L94.1,96z"/>
<path class="st4" d="M128.3,61.8L162.5,96l34.2-34.2c0,0,0,0-0.1-0.1l-34.1-34.1c0,0,0,0,0,0L128.3,61.8z"/>
<path class="st5" d="M60,61.9c-18.7,18.9-18.6,49.3,0.1,68.1l34-34L60,61.9z"/>
<path class="st6" d="M128.3,61.8L94.2,27.7l-34,34c-0.1,0.1-0.1,0.1-0.2,0.2L94.1,96L128.3,61.8z"/>
<path class="st7" d="M162.5,27.6c-18.9-18.8-49.4-18.8-68.2,0l-0.1,0.1l34.1,34.1L162.5,27.6z"/>
<path class="st8" d="M303.7,138.6v-34.9c0-8.6-4.5-16.4-13.3-16.4c-8.7,0-13.9,7.8-13.9,16.4v34.9h-16.1V73.4h14.9l1.2,7.9
c3.4-6.6,11-9,17.2-9c7.8,0,15.6,3.2,19.3,12.2c5.8-9.2,13.3-11.9,21.8-11.9c18.5,0,27.6,11.4,27.6,30.9v35.1h-16.1v-35.1
c0-8.6-3.6-15.9-12.3-15.9c-8.7,0-14.1,7.5-14.1,16.1v34.9H303.7z"/>
<path class="st8" d="M430.3,73.5h15.5v65.1h-15.2l-0.8-9.5c-3.7,7.7-13.9,11.4-21.1,11.5c-19.3,0.1-33.6-11.8-33.6-34.6
c0-22.5,14.9-34.2,34-34.1c8.7,0,17,4.1,20.7,10.6L430.3,73.5z M391.2,106c0,12.4,8.6,19.8,19.3,19.8c25.4,0,25.4-39.5,0-39.5
C399.8,86.3,391.2,93.6,391.2,106z"/>
<path class="st8" d="M459.4,165.8V73.5h15.1l1.1,9c5-7.3,13.7-10.4,21.1-10.4c20.1,0,33.4,14.9,33.4,34.1c0,19-12,34.1-32.9,34.1
c-6.9,0-17-2.1-21.7-9.3v34.9H459.4z M514,106.1c0-10.2-6.9-18.5-18.5-18.5c-11.6,0-18.5,8.3-18.5,18.5c0,10.2,7.5,18.5,18.5,18.5
C506.4,124.6,514,116.3,514,106.1z"/>
<path class="st8" d="M558.9,53.7v19.7h22.2v5.4h-22.2v39.8c0,8.8,1.9,15.1,12,15.1c3.2,0,6.7-1.1,10-2.6l2.2,5.3
c-4.1,2-8.2,3.3-12.3,3.3c-13.9,0-18.4-8.2-18.4-21V78.8h-13.9v-5.4h13.9v-19L558.9,53.7z"/>
<path class="st8" d="M604.6,52.1c0,6.9-10.4,6.9-10.4,0C594.1,45.2,604.6,45.2,604.6,52.1z M596,73.1v65.5h6.5V73.1H596z"/>
<path class="st8" d="M627.4,46.2v92.5H621V46.2H627.4z"/>
<path class="st8" d="M730.1,73.4l0.3,11.6c4.1-8.9,13.3-12.3,21.7-12.3c4.9-0.1,9.6,1.2,14,3.8l-2.9,5.3c-3.4-2.1-7.3-3-11.1-3
c-12.2,0.1-21.5,9.9-21.5,21.8v38H724V73.4H730.1z"/>
<g>
<path class="st8" d="M674.9,134.7c-11.5,0-21.4-7.2-25.5-17.4l0,0l0,0c0,0,0,0,0,0l52.8-14c0,0,0,0,0,0.1l5.6-1.5
c-2.3-16.5-16.2-29.3-33-29.3c-18.4,0-33.3,15.2-33.3,34c0,18.8,14.9,34,33.3,34c13.8,0,25.6-8.5,30.6-20.7l-5.3-2.3
C696.1,127.6,686.3,134.7,674.9,134.7z M647.4,106.6c0-15.5,12.3-28.1,27.5-28.1c11.9,0,22,7.7,25.9,18.5L647.7,111
C647.5,109.5,647.4,108.1,647.4,106.6z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB