59 Commits

Author SHA1 Message Date
vcoppe 31e8332d23 New translations en.json (Chinese Simplified)
[ci skip]
2026-06-15 22:33:00 +02:00
vcoppe 4426bf5eee New translations en.json (Chinese Simplified)
[ci skip]
2026-06-15 20:36:31 +02:00
vcoppe 1ff2cd2b9d New translations file.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-15 19:40:32 +02:00
vcoppe ed7ed3896e New translations getting-started.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-15 19:40:30 +02:00
vcoppe 2246b134b4 New translations files-and-stats.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-15 19:40:29 +02:00
vcoppe af993cf9da New translations edit.mdx (Chinese Simplified)
[ci skip]
2026-06-15 19:40:27 +02:00
vcoppe 96a23bd5e8 New translations edit.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-15 19:40:26 +02:00
vcoppe 53274db810 New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-15 19:40:23 +02:00
vcoppe 080afe57cf New translations edit.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-15 18:22:48 +02:00
vcoppe 891f27c9ae New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-15 18:22:46 +02:00
vcoppe 46a47160a3 New translations faq.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-14 18:33:53 +02:00
vcoppe ac718fee86 New translations routing.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-14 18:33:52 +02:00
vcoppe 484a5e1942 New translations settings.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-14 18:33:50 +02:00
vcoppe 824dda2ffd New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-14 18:33:49 +02:00
vcoppe 72a12f987f New translations en.json (Chinese Simplified)
[ci skip]
2026-06-14 18:33:48 +02:00
vcoppe c3ada001c7 New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-14 17:29:11 +02:00
vcoppe 051a34b408 New translations en.json (Chinese Simplified)
[ci skip]
2026-06-14 17:29:10 +02:00
vcoppe b8fa6f3c8e New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-14 16:29:19 +02:00
vcoppe c565358601 New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-14 15:25:33 +02:00
vcoppe 7ff62f5d79 New translations en.json (Chinese Simplified)
[ci skip]
2026-06-14 15:25:31 +02:00
vcoppe e453991b18 New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
2026-06-14 13:40:58 +02:00
vcoppe e21c4bf46e New translations en.json (Romanian)
[ci skip]
2026-06-05 10:52:53 +02:00
vcoppe 2dee4edd2c New translations settings.mdx (Dutch)
[ci skip]
2026-06-04 15:22:45 +02:00
vcoppe 0b4aa6e90d New translations elevation.mdx (Chinese Simplified)
[ci skip]
2026-06-01 04:25:51 +02:00
vcoppe 3b59b0bada New translations en.json (Chinese Simplified)
[ci skip]
2026-06-01 04:25:49 +02:00
vcoppe 604faff238 New translations map-controls.mdx (Chinese Simplified)
[ci skip]
2026-06-01 04:25:48 +02:00
vcoppe 26e4b637a2 New Crowdin updates (#353)
* New translations en.json (Dutch)

[ci skip]

* New translations map-controls.mdx (Dutch)

[ci skip]

* New translations elevation.mdx (Dutch)

[ci skip]
2026-05-31 15:25:59 +02:00
vcoppe 75e3bc6f93 use self-hosted overpass api 2026-05-31 15:25:10 +02:00
vcoppe 70bb125076 change contour line labels for all compatible styles 2026-05-29 08:35:11 +02:00
vcoppe e0a4fc186a New Crowdin updates (#351)
* New translations map-controls.mdx (Chinese Simplified)

[ci skip]

* New translations en.json (Dutch)

[ci skip]

* New translations en.json (Romanian)

[ci skip]

* New translations en.json (French)

[ci skip]

* New translations en.json (Spanish)

[ci skip]

* New translations en.json (Belarusian)

[ci skip]

* New translations en.json (Catalan)

[ci skip]

* New translations en.json (Czech)

[ci skip]

* New translations en.json (Danish)

[ci skip]

* New translations en.json (German)

[ci skip]

* New translations en.json (Greek)

[ci skip]

* New translations en.json (Basque)

[ci skip]

* New translations en.json (Finnish)

[ci skip]

* New translations en.json (Hebrew)

[ci skip]

* New translations en.json (Hungarian)

[ci skip]

* New translations en.json (Italian)

[ci skip]

* New translations en.json (Korean)

[ci skip]

* New translations en.json (Lithuanian)

[ci skip]

* New translations en.json (Norwegian)

[ci skip]

* New translations en.json (Polish)

[ci skip]

* New translations en.json (Portuguese)

[ci skip]

* New translations en.json (Russian)

[ci skip]

* New translations en.json (Swedish)

[ci skip]

* New translations en.json (Turkish)

[ci skip]

* New translations en.json (Indonesian)

[ci skip]

* New translations map-controls.mdx (Chinese Simplified)

[ci skip]

* New translations en.json (Ukrainian)

[ci skip]

* New translations en.json (Chinese Simplified)

[ci skip]

* New translations en.json (Vietnamese)

[ci skip]

* New translations en.json (Portuguese, Brazilian)

[ci skip]

* New translations en.json (Thai)

[ci skip]

* New translations en.json (Latvian)

[ci skip]

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

[ci skip]

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

[ci skip]

* New translations map-controls.mdx (Romanian)

[ci skip]

* New translations map-controls.mdx (French)

[ci skip]

* New translations map-controls.mdx (Spanish)

[ci skip]

* New translations map-controls.mdx (Belarusian)

[ci skip]

* New translations map-controls.mdx (Catalan)

[ci skip]

* New translations map-controls.mdx (Czech)

[ci skip]

* New translations map-controls.mdx (Danish)

[ci skip]

* New translations map-controls.mdx (German)

[ci skip]

* New translations map-controls.mdx (Greek)

[ci skip]

* New translations map-controls.mdx (Basque)

[ci skip]

* New translations map-controls.mdx (Finnish)

[ci skip]

* New translations map-controls.mdx (Hebrew)

[ci skip]

* New translations map-controls.mdx (Hungarian)

[ci skip]

* New translations map-controls.mdx (Italian)

[ci skip]

* New translations map-controls.mdx (Korean)

[ci skip]

* New translations map-controls.mdx (Lithuanian)

[ci skip]

* New translations map-controls.mdx (Dutch)

[ci skip]

* New translations map-controls.mdx (Norwegian)

[ci skip]

* New translations map-controls.mdx (Polish)

[ci skip]

* New translations map-controls.mdx (Portuguese)

[ci skip]

* New translations map-controls.mdx (Russian)

[ci skip]

* New translations map-controls.mdx (Swedish)

[ci skip]

* New translations map-controls.mdx (Turkish)

[ci skip]

* New translations map-controls.mdx (Ukrainian)

[ci skip]

* New translations map-controls.mdx (Vietnamese)

[ci skip]

* New translations map-controls.mdx (Portuguese, Brazilian)

[ci skip]

* New translations map-controls.mdx (Indonesian)

[ci skip]

* New translations map-controls.mdx (Thai)

[ci skip]

* New translations map-controls.mdx (Latvian)

[ci skip]

* New translations map-controls.mdx (Chinese Traditional, Hong Kong)

[ci skip]

* New translations map-controls.mdx (Serbian (Latin))

[ci skip]

* New translations elevation.mdx (Romanian)

[ci skip]

* New translations elevation.mdx (French)

[ci skip]

* New translations elevation.mdx (Spanish)

[ci skip]

* New translations elevation.mdx (Belarusian)

[ci skip]

* New translations elevation.mdx (Catalan)

[ci skip]

* New translations elevation.mdx (Czech)

[ci skip]

* New translations elevation.mdx (Danish)

[ci skip]

* New translations elevation.mdx (German)

[ci skip]

* New translations elevation.mdx (Greek)

[ci skip]

* New translations elevation.mdx (Basque)

[ci skip]

* New translations elevation.mdx (Finnish)

[ci skip]

* New translations elevation.mdx (Hebrew)

[ci skip]

* New translations elevation.mdx (Hungarian)

[ci skip]

* New translations elevation.mdx (Italian)

[ci skip]

* New translations elevation.mdx (Korean)

[ci skip]

* New translations elevation.mdx (Lithuanian)

[ci skip]

* New translations elevation.mdx (Dutch)

[ci skip]

* New translations elevation.mdx (Norwegian)

[ci skip]

* New translations elevation.mdx (Polish)

[ci skip]

* New translations elevation.mdx (Portuguese)

[ci skip]

* New translations elevation.mdx (Russian)

[ci skip]

* New translations elevation.mdx (Swedish)

[ci skip]

* New translations elevation.mdx (Turkish)

[ci skip]

* New translations elevation.mdx (Ukrainian)

[ci skip]

* New translations elevation.mdx (Chinese Simplified)

[ci skip]

* New translations elevation.mdx (Vietnamese)

[ci skip]

* New translations elevation.mdx (Portuguese, Brazilian)

[ci skip]

* New translations elevation.mdx (Indonesian)

[ci skip]

* New translations elevation.mdx (Thai)

[ci skip]

* New translations elevation.mdx (Latvian)

[ci skip]

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

[ci skip]

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

[ci skip]

* New translations en.json (French)

[ci skip]

* New translations en.json (Spanish)

[ci skip]

* New translations map-controls.mdx (Spanish)

[ci skip]

* New translations elevation.mdx (Spanish)

[ci skip]

* New translations en.json (Indonesian)

[ci skip]

* New translations en.json (Dutch)

[ci skip]

* New translations en.json (Romanian)

[ci skip]

* New translations en.json (French)

[ci skip]

* New translations en.json (Spanish)

[ci skip]

* New translations en.json (Belarusian)

[ci skip]

* New translations en.json (Catalan)

[ci skip]

* New translations en.json (Czech)

[ci skip]

* New translations en.json (Danish)

[ci skip]

* New translations en.json (German)

[ci skip]

* New translations en.json (Greek)

[ci skip]

* New translations en.json (Basque)

[ci skip]

* New translations en.json (Finnish)

[ci skip]

* New translations en.json (Hebrew)

[ci skip]

* New translations en.json (Hungarian)

[ci skip]

* New translations en.json (Italian)

[ci skip]

* New translations en.json (Korean)

[ci skip]

* New translations en.json (Lithuanian)

[ci skip]

* New translations en.json (Norwegian)

[ci skip]

* New translations en.json (Polish)

[ci skip]

* New translations en.json (Portuguese)

[ci skip]

* New translations en.json (Russian)

[ci skip]

* New translations en.json (Swedish)

[ci skip]

* New translations en.json (Turkish)

[ci skip]

* New translations en.json (Ukrainian)

[ci skip]

* New translations en.json (Chinese Simplified)

[ci skip]

* New translations en.json (Vietnamese)

[ci skip]

* New translations en.json (Portuguese, Brazilian)

[ci skip]

* New translations en.json (Thai)

[ci skip]

* New translations en.json (Latvian)

[ci skip]

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

[ci skip]

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

[ci skip]
2026-05-28 19:29:10 +02:00
vcoppe 6a9d30e8ea localization of OpenMapTiles styles 2026-05-28 19:15:01 +02:00
vcoppe 1e6a12eeda update styles 2026-05-28 18:58:49 +02:00
vcoppe 31912da76f use same font for markers 2026-05-27 22:03:53 +02:00
vcoppe fe8896e870 get styles from github 2026-05-27 20:17:49 +02:00
vcoppe c99517572e update images 2026-05-27 19:40:09 +02:00
vcoppe 0b7f30a7c4 remove maptiler layers 2026-05-27 18:52:15 +02:00
vcoppe fcfaf043c4 fix map localization 2026-05-26 06:28:32 +02:00
vcoppe 0393a330a6 fix loading initial style 2026-05-26 06:18:00 +02:00
vcoppe 2fdb58bc7d switch contour lines based on units 2026-05-25 16:50:28 +02:00
vcoppe c758bda1a9 update tiles endpoint 2026-05-25 15:48:23 +02:00
vcoppe 88e301e2a2 use maptiler satellite 2026-05-25 14:45:03 +02:00
vcoppe 161c664e08 borders 2026-05-25 11:26:49 +02:00
vcoppe a0408ec798 revert rivers 2026-05-25 11:00:55 +02:00
vcoppe 480d5586b9 inverse font color and halo 2026-05-25 10:58:23 +02:00
vcoppe 7b49018593 remove casings 2026-05-25 10:44:53 +02:00
vcoppe 4b447a9b9d revert some of the changes 2026-05-25 10:40:38 +02:00
vcoppe 443feb2bfa road opacities 2026-05-25 10:29:29 +02:00
vcoppe 8710101a78 remove filled areas 2026-05-25 09:59:54 +02:00
vcoppe 2c20148e64 start satellite style 2026-05-24 13:49:43 +02:00
vcoppe ffc0e84788 slightly bigger paths 2026-05-24 00:23:40 +02:00
vcoppe 2d2004e447 small color change 2026-05-24 00:16:55 +02:00
vcoppe 4a7cfc113d vector terrain 2026-05-24 00:13:26 +02:00
vcoppe f03ad5a0e9 colored track casing 2026-05-24 00:04:09 +02:00
vcoppe 7f5b83f9d8 only use surface for coloring 2026-05-23 20:13:47 +02:00
vcoppe 5a8f93e225 different colors depending on surface 2026-05-23 20:10:21 +02:00
vcoppe 668b0f6b23 clearer path names 2026-05-23 19:59:12 +02:00
vcoppe fc1eb5a408 highlight trails 2026-05-23 19:52:04 +02:00
vcoppe 561c7e22b3 first tweaks 2026-05-23 19:17:37 +02:00
vcoppe ce067d4ff0 add custom layer base from openfreemap (osm liberty) 2026-05-23 19:14:59 +02:00
70 changed files with 785 additions and 791 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 KiB

After

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 525 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 710 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 KiB

+16 -19
View File
@@ -31,10 +31,10 @@ import bikerouterGravel from './custom/bikerouter-gravel.json';
export const maptilerKeyPlaceHolder = 'MAPTILER_KEY';
export const basemaps: { [key: string]: string | StyleSpecification } = {
maptilerStreets: `https://api.maptiler.com/maps/streets-v4/style.json?key=${maptilerKeyPlaceHolder}`,
maptilerTopo: `https://api.maptiler.com/maps/topo-v4/style.json?key=${maptilerKeyPlaceHolder}`,
maptilerOutdoors: `https://api.maptiler.com/maps/outdoor-v4/style.json?key=${maptilerKeyPlaceHolder}`,
maptilerSatellite: `https://api.maptiler.com/maps/hybrid-v4/style.json?key=${maptilerKeyPlaceHolder}`,
libertyTopo: 'https://styles.gpx.studio/liberty-topo.json',
libertySatellite: 'https://styles.gpx.studio/liberty-satellite.json',
osm: 'https://styles.gpx.studio/osm.json',
osmTopo: 'https://styles.gpx.studio/osm-topo.json',
esriSatellite: {
version: 8,
sources: {
@@ -799,10 +799,10 @@ export type LayerTreeType = { [key: string]: LayerTreeType | boolean };
export const basemapTree: LayerTreeType = {
basemaps: {
world: {
maptilerStreets: true,
maptilerTopo: true,
maptilerOutdoors: true,
maptilerSatellite: true,
libertyTopo: true,
libertySatellite: true,
osm: true,
osmTopo: true,
esriSatellite: true,
openStreetMap: true,
openTopoMap: true,
@@ -936,7 +936,7 @@ export const overpassTree: LayerTreeType = {
};
// Default basemap used
export const defaultBasemap = 'maptilerStreets';
export const defaultBasemap = 'libertyTopo';
// Default overlays used (none)
export const defaultOverlays: LayerTreeType = {
@@ -1025,10 +1025,10 @@ export const defaultOverpassQueries: LayerTreeType = {
export const defaultBasemapTree: LayerTreeType = {
basemaps: {
world: {
maptilerStreets: true,
maptilerTopo: true,
maptilerOutdoors: true,
maptilerSatellite: true,
libertyTopo: true,
libertySatellite: true,
osm: true,
osmTopo: true,
esriSatellite: false,
openStreetMap: true,
openTopoMap: true,
@@ -1487,14 +1487,11 @@ export const overpassQueryData: Record<string, OverpassQueryData> = {
};
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: {
type: 'raster-dem',
url: 'https://tiles.mapterhorn.com/tilejson.json',
url: 'https://tiles.gpx.studio/mapterhorn.json',
encoding: 'terrarium',
},
};
export const defaultTerrainSource = 'maptiler-dem';
export const defaultTerrainSource = 'mapterhorn';
+1 -7
View File
@@ -8,7 +8,7 @@
...others
}: {
iconOnly?: boolean;
company?: 'gpx.studio' | 'maptiler' | 'github' | 'crowdin' | 'facebook' | 'reddit';
company?: 'gpx.studio' | 'github' | 'crowdin' | 'facebook' | 'reddit';
[key: string]: any;
} = $props();
</script>
@@ -19,12 +19,6 @@
alt="Logo of gpx.studio."
{...others}
/>
{:else if company === 'maptiler'}
<img
src="{base}/maptiler-logo{mode.current === 'dark' ? '-dark' : ''}.svg"
alt="Logo of Maptiler."
{...others}
/>
{:else if company === 'github'}
<svg
role="img"
@@ -1,10 +1,10 @@
<script lang="ts">
import maptilerTopoMap from '$lib/assets/img/home/maptiler-topo.png?enhanced';
import waymarkedMap from '$lib/assets/img/home/waymarked.png?enhanced';
import topoMap from '$lib/assets/img/docs/maps/topo.png?enhanced';
import waymarkedMap from '$lib/assets/img/docs/maps/waymarked.png?enhanced';
</script>
<div class="relative h-80 aspect-square rounded-2xl shadow-xl overflow-clip">
<enhanced:img src={maptilerTopoMap} alt="MapTiler Topo map screenshot." class="absolute" />
<enhanced:img src={topoMap} alt="Topo map screenshot." class="absolute" />
<enhanced:img
src={waymarkedMap}
alt="Waymarked Trails map screenshot."
@@ -29,7 +29,7 @@ export const defaultEmbeddingOptions = {
key: '',
files: [],
ids: [],
basemap: 'maptilerStreets',
basemap: 'libertyTopo',
elevation: {
show: true,
height: 170,
@@ -126,7 +126,7 @@ export function convertOldEmbeddingOptions(options: URLSearchParams): any {
if (options.has('source')) {
let basemap = options.get('source')!;
if (basemap === 'satellite') {
newOptions.basemap = 'maptilerSatellite';
newOptions.basemap = 'libertySatellite';
} else if (basemap === 'otm') {
newOptions.basemap = 'openTopoMap';
} else if (basemap === 'ohm') {
@@ -74,7 +74,7 @@ export class DistanceMarkers {
layout: {
'text-field': ['get', 'distance'],
'text-size': 14,
'text-font': ['Open Sans Bold'],
'text-font': ['Noto Sans Bold'],
},
paint: {
'text-color': 'black',
@@ -251,11 +251,11 @@ export class GPXLayer {
source: this.fileId,
layout: {
'text-field': '»',
'text-offset': [0, -0.06],
'text-offset': [0, -0.1],
'text-keep-upright': false,
'text-max-angle': 361,
'text-allow-overlap': true,
'text-font': ['Open Sans Bold'],
'text-font': ['Noto Sans Bold'],
'symbol-placement': 'line',
'symbol-spacing': 20,
},
@@ -24,7 +24,7 @@ liveQuery(() => db.overpassdata.toArray()).subscribe((pois) => {
});
export class OverpassLayer {
overpassUrl = 'https://overpass.private.coffee/api/interpreter';
overpassUrl = 'https://overpass.gpx.studio/api/interpreter';
minZoom = 12;
queryZoom = 12;
expirationTime = 7 * 24 * 3600 * 1000;
+65 -31
View File
@@ -10,7 +10,8 @@ import {
import { getLayers } from '$lib/components/map/layer-control/utils';
import { i18n } from '$lib/i18n.svelte';
const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource } = settings;
const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource, distanceUnits } =
settings;
const emptySource: maplibregl.GeoJSONSourceSpecification = {
type: 'geojson',
@@ -57,15 +58,24 @@ export class StyleManager {
opacities.subscribe(() => this.updateOverlays());
terrainSource.subscribe(() => this.updateTerrain());
customLayers.subscribe(() => this.updateBasemap());
distanceUnits.subscribe(() => {
const map = get(this._map);
if (map && (map.getLayer('contours_m') || map.getLayer('contours_ft'))) {
this.updateBasemap();
}
});
}
updateBasemap() {
const map_ = get(this._map);
if (!map_) return;
this.buildStyle().then((style) => map_.setStyle(style));
let basemap = get(currentBasemap);
this.buildStyle(basemap).then((style) => {
if (get(currentBasemap) === basemap) map_.setStyle(style);
});
}
async buildStyle(): Promise<maplibregl.StyleSpecification> {
async buildStyle(basemap: string): Promise<maplibregl.StyleSpecification> {
const custom = get(customLayers);
const style: maplibregl.StyleSpecification = {
@@ -79,22 +89,31 @@ export class StyleManager {
layers: [],
};
let basemap = get(currentBasemap);
const basemapInfo = basemaps[basemap] ?? custom[basemap]?.value ?? basemaps[defaultBasemap];
let basemapStyle = basemaps.openStreetMap as maplibregl.StyleSpecification;
try {
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) {
console.error(e.message);
}
this.merge(style, basemapStyle);
if (this._maptilerKey !== '') {
const terrain = this.getCurrentTerrain();
style.sources[terrain.source] = terrainSources[terrain.source];
style.terrain = terrain.exaggeration > 0 ? terrain : undefined;
}
const terrain = this.getCurrentTerrain();
style.sources[terrain.source] = terrainSources[terrain.source];
style.terrain = terrain.exaggeration > 0 ? terrain : undefined;
style.layers.push(...anchorLayers);
@@ -166,7 +185,6 @@ export class StyleManager {
}
updateTerrain() {
if (this._maptilerKey === '') return;
const map_ = get(this._map);
if (!map_) return;
@@ -189,9 +207,6 @@ export class StyleManager {
): Promise<maplibregl.StyleSpecification> {
if (typeof styleInfo === 'string') {
let styleUrl = styleInfo as string;
if (styleUrl.includes(maptilerKeyPlaceHolder)) {
styleUrl = styleUrl.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
const response = await fetch(styleUrl, { cache: 'force-cache' });
if (!response.ok) {
throw new Error(`HTTP error fetching style "${styleInfo}": ${response.status}`);
@@ -205,23 +220,46 @@ export class StyleManager {
merge(style: maplibregl.StyleSpecification, other: maplibregl.StyleSpecification) {
style.sources = { ...style.sources, ...other.sources };
const units = get(distanceUnits);
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']) {
const textField = layer.layout['text-field'];
if (
Array.isArray(textField) &&
textField.length >= 2 &&
textField[0] === 'coalesce' &&
Array.isArray(textField[1]) &&
textField[1][0] === 'get' &&
typeof textField[1][1] === 'string' &&
textField[1][1].startsWith('name')
) {
layer.layout['text-field'] = [
'coalesce',
['get', `name:${i18n.lang}`],
['get', 'name'],
];
if (Array.isArray(textField)) {
if (
textField.length == 4 &&
Array.isArray(textField[3]) &&
textField[3][0] === 'coalesce' &&
Array.isArray(textField[3][1]) &&
textField[3][1][0] === 'get' &&
typeof textField[3][1][1] === 'string' &&
textField[3][1][1].startsWith('name')
) {
// OpenFreeMap styles
layer.layout['text-field'] = [
'coalesce',
['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);
@@ -236,10 +274,6 @@ export class StyleManager {
getCurrentTerrain() {
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);
return {
source: terrain,
+1 -1
View File
@@ -59,7 +59,7 @@ Only one basemap can be displayed at a time.
<DocsLayers />
<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 <a href="https://www.maptiler.com/maps/outdoor-topo/" target="_blank">MapTiler Topo</a> 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 topographic basemap.
</span>
</div>
@@ -18,7 +18,7 @@ This tool allows you to add elevation data to traces and [points of interest](..
<DocsNote>
Elevation data is provided by <a href="https://maptiler.com" target="_blank">MapTiler</a>.
You can learn more about its origin and accuracy in the <a href="https://docs.maptiler.com/guides/map-tiling-hosting/data-hosting/rgb-terrain-by-maptiler/" target="_blank">documentation</a>.
Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>.
You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>.
</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 />
<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.
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.
</span>
</div>
@@ -18,7 +18,7 @@ Esta herramienta permite añadir datos de elevación a los rastros y [puntos de
<DocsNote>
Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>.
You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>.
Los datos de elevación son proporcionados por <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>.
</DocsNote>
+1 -1
View File
@@ -59,7 +59,7 @@ Met de kaartlagen knop kun je wisselen tussen verschillende basiskaarten, en kaa
<DocsLayers />
<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.
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.
</span>
</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.
### <Zap size="16" class="inline-block" style="margin-bottom: 2px" /> Snelheids eenheden
### <Zap size="16" class="inline-block" style="margin-bottom: 2px" /> Snelheidseenheden
Verander de eenheden die worden gebruikt om velocities in de interface weer te geven.
Verander de eenheden die worden gebruikt om snelheden 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.
### <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>
Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>.
You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>.
Hoogtegegevens worden verstrekt door <a href="https://maptiler.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>.
</DocsNote>
+2 -2
View File
@@ -1,5 +1,5 @@
---
title: FAQ
title: 常見問題
---
<script>
@@ -8,7 +8,7 @@ title: FAQ
# { title }
### Do I need to donate to use the website?
### 需要捐贈才能使用這網站嗎?
No.
The website is free to use and always will be (as long as it is financially sustainable).
@@ -1,5 +1,5 @@
---
title: Files and statistics
title: 檔案和統計
---
<script lang="ts">
@@ -19,7 +19,7 @@ title: Files and statistics
# { title }
## File list
## 檔案列表
Once you have [opened](./menu/file) files, they will be shown as tabs in the file list located at the bottom of the map.
You can reorder them by dragging and dropping the tabs.
@@ -21,7 +21,7 @@ Before we dive into the details of each section, let's have a quick overview of
At the top of the interface, you will find the [main menu](./menu).
This is where you can access common actions such as opening, closing, and exporting files, undoing and redoing actions, and adjusting the application settings.
## Files and statistics
## 檔案和統計
At the bottom of the interface, you will find the list of files currently open in the application.
You can click on a file to select it and display its statistics below the list.
+35 -35
View File
@@ -10,87 +10,87 @@ title: Edit actions
# { title }
與文件操作不同,編輯操作可能會修改目前選定文件的內容。
Moreover, when the tree layout of the files list is enabled (see [Files and statistics](../files-and-stats)), they can also be applied to [tracks, segments, and points of interest](../gpx).
Therefore, we will refer to the elements that can be modified by these actions as _file items_.
Note that except for the undo and redo actions, the edit actions are also accessible through the context menu (right-click) of the file items.
若啟用檔案 [樹形佈局](../files-and-stats),操作也可作用於相關 [軌跡、路段和興趣點](../gpx)
在文件中,所有可通過以上操作修改的項目被稱為 _檔案項_。
注意,除復原和重做外,其餘操作也可通過右鍵點選檔案項來喚出操作菜單。
### <Undo2 size="16" class="inline-block" style="margin-bottom: 2px" /><Redo2 size="16" class="inline-block" style="margin-bottom: 2px" /> Undo and redo
### <Undo2 size="16" class="inline-block" style="margin-bottom: 2px" /><Redo2 size="16" class="inline-block" style="margin-bottom: 2px" /> 復原和重做
Using these buttons, you can undo or redo the last actions you performed.
This applies to all actions of the interface but not to view options, application settings, or map navigation.
復原或重做上一次執行的操作。
只適用於在介面上直接進行的所有操作,不適用於顯示選項、應用設定或地圖導航。
### <Info size="16" class="inline-block" style="margin-bottom: 2px" /> Info...
### <Info size="16" class="inline-block" style="margin-bottom: 2px" /> 資訊…
Open the information dialog of the currently selected file item, where you can see and edit its name and description.
用於查看或編輯所選檔案項的名稱和說明資訊。用於查看或編輯所選檔案項的名稱和說明資訊。
### <PaintBucket size="16" class="inline-block" style="margin-bottom: 2px" /> Appearance...
### <PaintBucket size="16" class="inline-block" style="margin-bottom: 2px" /> 外觀
Open the appearance dialog, where you can change the color, opacity, and width of the selected file items on the map.
用於調整所選檔案項在地圖上顯示的軌跡顏色、不透明度和闊度。
### <EyeOff size="16" class="inline-block" style="margin-bottom: 2px" /> Hide/unhide
### <EyeOff size="16" class="inline-block" style="margin-bottom: 2px" /> 隱藏/顯示
Toggle the visibility of the selected file items on the map.
切換所選檔案項在地圖上的可見性。
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> New track
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> 新建軌跡
Create a new track in the selected file.
在所選檔案項中建立一條新軌跡。
<DocsNote>
This action is only available when the tree layout of the files list is enabled.
Additionally, the selection must be a single file.
此操作僅在啟用樹形佈局時可用,
所選內容必須是一個檔案。
</DocsNote>
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> New segment
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> 新建路段
Create a new segment in the selected track.
在所選軌跡中建立一個新路段。
<DocsNote>
This action is only available when the tree layout of the files list is enabled.
Additionally, the selection must be a single track.
此操作僅在啟用樹形佈局時可用,
且所選內容必須是單條軌跡。
</DocsNote>
### <FileStack size="16" class="inline-block" style="margin-bottom: 2px" /> Select all
### <FileStack size="16" class="inline-block" style="margin-bottom: 2px" /> 全選
Add all file items in the current hierarchy level to the selection.
加入當前檔案層級中所有內容到選取中。
### <Maximize size="16" class="inline-block" style="margin-bottom: 2px" /> Center
### <Maximize size="16" class="inline-block" style="margin-bottom: 2px" /> 置中
Center the map on the selected file items.
根據所選檔案項調整地圖顯示中心。
### <ClipboardCopy size="16" class="inline-block" style="margin-bottom: 2px" /> Copy
### <ClipboardCopy size="16" class="inline-block" style="margin-bottom: 2px" /> 複製
Copy the selected file items to the clipboard.
複製所選檔案項到剪貼簿。
<DocsNote>
This action is only available when the tree layout of the files list is enabled.
此操作僅在啟用樹形佈局時可用,
</DocsNote>
### <Scissors size="16" class="inline-block" style="margin-bottom: 2px" /> Cut
### <Scissors size="16" class="inline-block" style="margin-bottom: 2px" /> 剪下
Cut the selected file items to the clipboard.
剪下所選檔案項到剪貼簿。
<DocsNote>
This action is only available when the tree layout of the files list is enabled.
此操作僅在啟用樹形佈局時可用,
</DocsNote>
### <ClipboardPaste size="16" class="inline-block" style="margin-bottom: 2px" /> Paste
### <ClipboardPaste size="16" class="inline-block" style="margin-bottom: 2px" /> 貼上
Paste the file items from the clipboard to the current hierarchy level if they are compatible with it.
如果剪貼簿中的內容與當前檔案層級相容,進行貼上操作。
<DocsNote>
This action is only available when the tree layout of the files list is enabled.
此操作僅在啟用樹形佈局時可用,
</DocsNote>
### <Trash2 size="16" class="inline-block" style="margin-bottom: 2px" /> Delete
### <Trash2 size="16" class="inline-block" style="margin-bottom: 2px" /> 刪除
Delete the selected file items.
刪除所選檔案項。
+18 -18
View File
@@ -1,5 +1,5 @@
---
title: File actions
title: 檔案
---
<script lang="ts">
@@ -9,44 +9,44 @@ title: File actions
# { title }
The file actions menu contains a set of pretty self-explanatory file operations.
該菜單中的操作非常清晰。
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> New
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> 新增
Create a new empty file.
創造一個新的空白檔案。
### <FolderOpen size="16" class="inline-block" style="margin-bottom: 2px" /> Open...
### <FolderOpen size="16" class="inline-block" style="margin-bottom: 2px" /> 開啟…
Open files from your computer.
開啟本地檔案。
<DocsNote>
You can also drag and drop files directly from your file system into the window.
支援將檔案直接拖放到窗口中。
</DocsNote>
### <Copy size="16" class="inline-block" style="margin-bottom: 2px" /> Duplicate
### <Copy size="16" class="inline-block" style="margin-bottom: 2px" /> 複製
Create a copy of the currently selected files.
創造當前選中檔案的副本。
### <FileX size="16" class="inline-block" style="margin-bottom: 2px" /> Delete
### <FileX size="16" class="inline-block" style="margin-bottom: 2px" /> 刪除
Delete the currently selected files.
刪除當前選中的檔案。
### <FileX size="16" class="inline-block" style="margin-bottom: 2px" /> Delete all
### <FileX size="16" class="inline-block" style="margin-bottom: 2px" /> 全部刪除
Delete all files.
刪除全部檔案。
### <Download size="16" class="inline-block" style="margin-bottom: 2px" /> Export...
### <Download size="16" class="inline-block" style="margin-bottom: 2px" /> 匯出...
Open the export dialog to save the currently selected files to your computer.
保存當前選取檔案到本地。
### <Download size="16" class="inline-block" style="margin-bottom: 2px" /> Export all...
### <Download size="16" class="inline-block" style="margin-bottom: 2px" /> 匯出所有…
Open the export dialog to save all files to your computer.
保存所有檔案到本地。
<DocsNote type="warning">
If your download does not start after clicking the download button, please check your browser settings to allow downloads from <b>gpx.studio</b>.
點選下載按鈕後若無反應,請檢查瀏覽器設定以允許其從 <b>gpx.studio</b> 下載。
</DocsNote>
+2 -2
View File
@@ -1,5 +1,5 @@
---
title: Settings
title: 設定
---
<script lang="ts">
@@ -9,7 +9,7 @@ title: Settings
# { title }
### <Ruler size="16" class="inline-block" style="margin-bottom: 2px" /> Distance units
### <Ruler size="16" class="inline-block" style="margin-bottom: 2px" /> 距離單位
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.
## Settings
## 設定
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>.
+1 -1
View File
@@ -59,7 +59,7 @@ title: 地图控件
<DocsLayers />
<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.
鼠标悬停在地图上,可在地形图底图上方显示 <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails 徒步路线</a> 叠加层。
</span>
</div>
+2 -2
View File
@@ -19,11 +19,11 @@ title: 编辑
撤销或重做最后一次执行的操作。
仅适用于在界面上直接进行的所有操作,不适用于显示选项、应用设置或地图导航。
### <Info size="16" class="inline-block" style="margin-bottom: 2px" /> 信息
### <Info size="16" class="inline-block" style="margin-bottom: 2px" /> 信息
用于查看或编辑所选文件项的名称和说明信息。
### <PaintBucket size="16" class="inline-block" style="margin-bottom: 2px" /> 外观
### <PaintBucket size="16" class="inline-block" style="margin-bottom: 2px" /> 外观
用于调整所选文件项在地图上显示的轨迹颜色、不透明度和线宽。
@@ -18,7 +18,7 @@ title: 请求海拔数据
<DocsNote>
Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>.
You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>.
海拔数据来自 <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>
查阅 <a href="https://mapterhorn.com/attribution/" target="_blank">官方文档</a> 以了解海拔数据来源及其准确度。
</DocsNote>
+2 -2
View File
@@ -210,7 +210,7 @@ type RoutingProfile =
| 'motorcycle'
| 'water'
| 'railway';
type TerrainSource = 'maptiler-dem' | 'mapterhorn';
type TerrainSource = 'mapterhorn';
type StreetViewSource = 'mapillary' | 'google';
export const settings = {
@@ -308,7 +308,7 @@ export const settings = {
terrainSource: new Setting<TerrainSource>(
'terrainSource',
defaultTerrainSource,
getValueValidator(['maptiler-dem', 'mapterhorn'], defaultTerrainSource)
getValueValidator(['mapterhorn'], defaultTerrainSource)
),
directionMarkers: new Setting('directionMarkers', false),
distanceMarkers: new Setting('distanceMarkers', false),
+8 -10
View File
@@ -7,7 +7,6 @@ import maplibregl from 'maplibre-gl';
import { pointToTile, pointToTileFraction } from '@mapbox/tilebelt';
import type { GPXStatisticsTree } from '$lib/logic/statistics-tree';
import { ListTrackSegmentItem } from '$lib/components/file-list/file-list';
import { PUBLIC_MAPTILER_KEY } from '$env/static/public';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
@@ -101,7 +100,7 @@ export function getClosestTrackSegments(
export function getElevation(
points: (TrackPoint | Waypoint | Coordinates)[],
ELEVATION_ZOOM: number = 13,
ELEVATION_ZOOM: number = 12,
tileSize = 512
): Promise<number[]> {
let coordinates = points.map((point) =>
@@ -122,10 +121,9 @@ export function getElevation(
};
let promises = uniqueTiles.map((tile) =>
fetch(
`https://api.maptiler.com/tiles/terrain-rgb-v2/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp?key=${PUBLIC_MAPTILER_KEY}`,
{ cache: 'force-cache' }
)
fetch(`https://tiles.gpx.studio/mapterhorn/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp`, {
cache: 'force-cache',
})
.then((response) => response.blob())
.then(
(blob) =>
@@ -180,10 +178,10 @@ export function getElevation(
_y + (_y + 1 == tileSize ? 0 : 1)
);
let ele00 = -10000 + (p00[0] * 256 * 256 + p00[1] * 256 + p00[2]) * 0.1;
let ele01 = -10000 + (p01[0] * 256 * 256 + p01[1] * 256 + p01[2]) * 0.1;
let ele10 = -10000 + (p10[0] * 256 * 256 + p10[1] * 256 + p10[2]) * 0.1;
let ele11 = -10000 + (p11[0] * 256 * 256 + p11[1] * 256 + p11[2]) * 0.1;
let ele00 = -32768 + p00[0] * 256 + p00[1] + p00[2] / 256;
let ele01 = -32768 + p01[0] * 256 + p01[1] + p01[2] / 256;
let ele10 = -32768 + p10[0] * 256 + p10[1] + p10[2] / 256;
let ele11 = -32768 + p11[0] * 256 + p11[1] + p11[2] / 256;
return (
ele00 * (1 - dx) * (1 - dy) +
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Suïssa",
"united_kingdom": "Regne Unit",
"united_states": "Estats Units",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Švýcarsko",
"united_kingdom": "Velká Británie",
"united_states": "Spojené státy",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Schweiz",
"united_kingdom": "Großbritannien",
"united_states": "USA",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+5 -6
View File
@@ -235,7 +235,7 @@
},
"elevation": {
"button": "Request elevation data",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help_no_selection": "Select a file item to request elevation data."
},
"waypoint": {
@@ -304,10 +304,10 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"maptilerStreets": "MapTiler Streets",
"maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
@@ -388,7 +388,6 @@
"tram-stop": "Tram Stop",
"bus-stop": "Bus Stop",
"ferry": "Ferry",
"maptiler-dem": "MapTiler DEM",
"mapterhorn": "Mapterhorn"
}
},
+5 -3
View File
@@ -235,7 +235,7 @@
},
"elevation": {
"button": "Solicitar datos de desnivel",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"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_no_selection": "Seleccione un elemento del archivo para solicitar datos de desnivel."
},
"waypoint": {
@@ -304,8 +304,10 @@
"switzerland": "Suiza",
"united_kingdom": "Reino Unido",
"united_states": "Estados Unidos",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Suitza",
"united_kingdom": "Erresuma Batua",
"united_states": "Ameriketako Estatu Batuak",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Sveitsi",
"united_kingdom": "Iso-Britannia",
"united_states": "Yhdysvallat",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Suisse",
"united_kingdom": "Royaume-Uni",
"united_states": "États-Unis",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Svájc",
"united_kingdom": "Anglia",
"united_states": "Amerika",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Swiss",
"united_kingdom": "Britania Raya",
"united_states": "Amerika Serikat",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Svizzera",
"united_kingdom": "United Kingdom",
"united_states": "Stati Uniti",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "스위스",
"united_kingdom": "영국",
"united_states": "미국",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "오픈스트리트맵",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Šveicarija",
"united_kingdom": "Jungtinė Karalystė",
"united_states": "Jungtinės Amerikos Valstijos",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+5 -3
View File
@@ -235,7 +235,7 @@
},
"elevation": {
"button": "Hoogtegegevens opvragen",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help": "Het opvragen van hoogtegegevens verwijdert de bestaande hoogtegegevens, indien aanwezig, en vervangt deze door gegevens van Mapterhorn.",
"help_no_selection": "Selecteer een bestand om hoogte gegevens op te vragen."
},
"waypoint": {
@@ -304,8 +304,10 @@
"switzerland": "Zwitserland",
"united_kingdom": "Verenigd Koninkrijk",
"united_states": "Verenigde Staten",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satelliet",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Sveits",
"united_kingdom": "Storbritannia",
"united_states": "USA",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Szwajcaria",
"united_kingdom": "Wielka Brytania",
"united_states": "Stany Zjednoczone",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Suíça",
"united_kingdom": "Reino Unido",
"united_states": "Estados Unidos",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Suíça",
"united_kingdom": "Reino Unido",
"united_states": "Estados Unidos",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+26 -24
View File
@@ -28,7 +28,7 @@
"undo": "Anulează",
"redo": "Refă",
"delete": "Șterge",
"delete_all": "Delete all",
"delete_all": "Șterge tot",
"select_all": "Selectează tot",
"view": "Vizualizare",
"elevation_profile": "Profil de altitudine",
@@ -36,7 +36,7 @@
"switch_basemap": "Comutați la harta de bază anterioară",
"toggle_overlays": "Comută suprapunerile",
"toggle_3d": "Comută 3D",
"fullscreen": "Full screen",
"fullscreen": "Ecran complet",
"settings": "Setări",
"distance_units": "Unități de distanță",
"metric": "Metric",
@@ -62,46 +62,46 @@
"more": "Mai multe...",
"donate": "Donați",
"ctrl": "Ctrl",
"click": "Click",
"click": "Clic",
"drag": "Drag",
"right_click_drag": "Right-click drag",
"metadata": {
"button": "Info...",
"name": "Name",
"button": "Informații...",
"name": "Nume",
"description": "Descriere",
"save": "Save"
"save": "Salvează"
},
"style": {
"button": "Aspect...",
"color": "Color",
"color": "Culoare",
"opacity": "Opacitate",
"width": "Width"
"width": "Lățime"
},
"hide": "Ascunde",
"unhide": "Dezvăluie",
"center": "Center",
"open_in": "Open in",
"center": "Centrează",
"open_in": "Deschide în",
"copy_coordinates": "Copiază coordonatele",
"edit_osm": "Edit in OpenStreetMap"
"edit_osm": "Editează în OpenStreetMap"
},
"toolbar": {
"routing": {
"tooltip": "Planifică sau editează o rută",
"activity": "Activitate",
"use_routing": "Rutare",
"use_routing_tooltip": "Connect anchor points via road network, or in a straight line if disabled",
"allow_private": "Allow private roads",
"use_routing_tooltip": "Conectează puncte de ancorare prin rețeaua rutieră sau în linie dreaptă dacă este dezactivată",
"allow_private": "Permite drumuri private",
"reverse": {
"button": "Reverse",
"button": "Inversează",
"tooltip": "Reverse the direction of the route"
},
"route_back_to_start": {
"button": "Back to start",
"tooltip": "Connect the last point of the route with the starting point"
"button": "Înapoi la punctul de plecare",
"tooltip": "Conectează ultimul punct al rutei cu punctul de plecare"
},
"round_trip": {
"button": "Round trip",
"tooltip": "Return to the starting point by the same route"
"button": "Călătorie dus-întors",
"tooltip": "Întoarce-te la punctul de plecare pe aceeași rută"
},
"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.",
@@ -120,7 +120,7 @@
"unknown": "Necunoscut",
"paved": "Asfaltat",
"unpaved": "Unpaved",
"asphalt": "Asphalt",
"asphalt": "Asfalt",
"concrete": "Concrete",
"cobblestone": "Pavaj",
"paving_stones": "Pavaj din pietre",
@@ -140,11 +140,11 @@
"grass": "Iarbă",
"grass_paver": "Pavaj cu iarbă",
"clay": "Clay",
"stone": "Stone"
"stone": "Piatră"
},
"highway": {
"unknown": "Unknown",
"motorway": "Highway",
"unknown": "Necunoscut",
"motorway": "Autostradă",
"motorway_link": "Highway link",
"trunk": "Primary road",
"trunk_link": "Primary road link",
@@ -304,8 +304,10 @@
"switzerland": "Elveția",
"united_kingdom": "Regatul Unit",
"united_states": "Statele Unite ale Americii",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Швейцария",
"united_kingdom": "Великобритания",
"united_states": "Соединенные Штаты Америки",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Švajcarska",
"united_kingdom": "Ujedinjeno Kraljevstvo",
"united_states": "Sjеdinjеnе Američke Državе",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Schweiz",
"united_kingdom": "Storbritannien",
"united_states": "USA",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "İsviçre",
"united_kingdom": "Birleşik Krallık",
"united_states": "Birlişik Devletler",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Швейцарія",
"united_kingdom": "Велика Британія\nВеликобританія",
"united_states": "Сполучені Штати",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+4 -2
View File
@@ -304,8 +304,10 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+437 -435
View File
@@ -2,310 +2,312 @@
"metadata": {
"home_title": "線上 GPX 檔案編輯器",
"app_title": "app",
"embed_title": "",
"help_title": "",
"404_title": "page not found",
"description": "。"
"embed_title": "線上 GPX 檔案編輯器",
"help_title": "幫助",
"404_title": "無法找到相關頁面",
"description": "線上查看、編輯和建立 GPX 檔案,包含高級路線規劃、檔案管理器、精美的地圖和詳細的資料可視化功能。"
},
"menu": {
"new": "New",
"new_file": "New file",
"new_track": "New track",
"new_segment": "New segment",
"open": "Open...",
"duplicate": "Duplicate",
"copy": "Copy",
"paste": "Paste",
"new": "新建",
"new_file": "新增檔案",
"new_track": "新增路徑",
"new_segment": "新增路段",
"open": "開啟...",
"duplicate": "建立副本",
"copy": "複製",
"paste": "貼上",
"cut": "剪下",
"export": "匯出……",
"export_all": "匯出所有……",
"export_options": "Export options",
"support_message": "The tool is free to use, but not free to run. Please consider supporting the website if you use it frequently. Thank you!",
"support_button": "Help keep the website free",
"download_file": "Download file",
"download_files": "Download files",
"edit": "Edit",
"undo": "Undo",
"redo": "Redo",
"delete": "Delete",
"delete_all": "Delete all",
"select_all": "Select all",
"view": "View",
"elevation_profile": "Elevation profile",
"tree_file_view": "File tree",
"switch_basemap": "Switch to previous basemap",
"toggle_overlays": "Toggle overlays",
"toggle_3d": "Toggle 3D",
"fullscreen": "Full screen",
"settings": "Settings",
"distance_units": "Distance units",
"metric": "Metric",
"imperial": "Imperial",
"nautical": "Nautical",
"velocity_units": "Velocity units",
"temperature_units": "Temperature units",
"celsius": "Celsius",
"fahrenheit": "Fahrenheit",
"language": "Language",
"mode": "Theme",
"system": "System",
"light": "Light",
"dark": "Dark",
"export_options": "匯出選項",
"support_message": "本工具免費使用,但運行此網站有成本。若您經常使用,請考慮捐贈以支持我們。非常感謝!",
"support_button": "幫助網站保持免費",
"download_file": "下載檔案",
"download_files": "下載所有檔案",
"edit": "編輯",
"undo": "復原",
"redo": "重做",
"delete": "刪除",
"delete_all": "全部刪除",
"select_all": "全選",
"view": "顯示",
"elevation_profile": "海拔剖面圖",
"tree_file_view": "檔案樹狀圖",
"switch_basemap": "切換到上一個底圖",
"toggle_overlays": "切換疊加層",
"toggle_3d": "切換三維檢視",
"fullscreen": "全螢幕",
"settings": "設定",
"distance_units": "距離單位",
"metric": "公制",
"imperial": "英制",
"nautical": "航海",
"velocity_units": "速度單位",
"temperature_units": "溫度單位",
"celsius": "攝氏",
"fahrenheit": "華氏",
"language": "語言",
"mode": "主題",
"system": "系統",
"light": "淺色",
"dark": "深色",
"street_view_source": "街景原始檔",
"mapillary": "Mapillary",
"google": "Google",
"toggle_street_view": "Street view",
"layers": "Map layers...",
"distance_markers": "Distance markers",
"direction_markers": "Direction arrows",
"help": "Help",
"more": "More...",
"donate": "Donate",
"toggle_street_view": "街景",
"layers": "地圖圖層...",
"distance_markers": "距離標記",
"direction_markers": "方向箭頭",
"help": "幫助",
"more": "更多...",
"donate": "捐贈",
"ctrl": "Ctrl",
"click": "Click",
"drag": "Drag",
"right_click_drag": "Right-click drag",
"click": "點選",
"drag": "拖動",
"right_click_drag": "右鍵拖動",
"metadata": {
"button": "Info...",
"name": "Name",
"description": "Description",
"save": "Save"
"button": "資訊...",
"name": "名稱",
"description": "說明",
"save": "保存"
},
"style": {
"button": "Appearance...",
"color": "Color",
"opacity": "Opacity",
"width": "Width"
"button": "外觀...",
"color": "配色",
"opacity": "透明度",
"width": "闊度"
},
"hide": "Hide",
"unhide": "Unhide",
"center": "Center",
"open_in": "Open in",
"copy_coordinates": "Copy coordinates",
"edit_osm": "Edit in OpenStreetMap"
"hide": "隱藏",
"unhide": "取消隱藏",
"center": "置中",
"open_in": "打開於",
"copy_coordinates": "複製座標",
"edit_osm": " OpenStreetMap 中編輯"
},
"toolbar": {
"routing": {
"tooltip": "Plan or edit a route",
"activity": "Activity",
"use_routing": "Routing",
"use_routing_tooltip": "Connect anchor points via road network, or in a straight line if disabled",
"allow_private": "Allow private roads",
"tooltip": "規劃或編輯路線",
"activity": "活動",
"use_routing": "路線",
"use_routing_tooltip": "通過路網連接錨點,若停用用直線連接",
"allow_private": "允許私家路",
"reverse": {
"button": "Reverse",
"tooltip": "Reverse the direction of the route"
"button": "反向",
"tooltip": "反轉路線方向"
},
"route_back_to_start": {
"button": "Back to start",
"tooltip": "Connect the last point of the route with the starting point"
"button": "返回起點",
"tooltip": "連接路線的起點與終點"
},
"round_trip": {
"button": "Round trip",
"tooltip": "Return to the starting point by the same route"
"button": "往返路線",
"tooltip": "按原路返回起點"
},
"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": "Click on the map to add a new anchor point, or drag existing ones to change the route.",
"start_loop_here": "在此開始循環",
"help_no_file": "選擇軌跡進行編輯,或在地圖上點選以建立新路線。",
"help": "點選地圖以加入新錨點,或拖動現有錨點以改變路線。",
"activities": {
"bike": "Bike",
"racing_bike": "Road bike",
"gravel_bike": "Gravel bike",
"mountain_bike": "Mountain bike",
"foot": "Run/hike",
"motorcycle": "Motorcycle",
"water": "Water",
"railway": "Railway"
"bike": "單車",
"racing_bike": "公路單車",
"gravel_bike": "礫石單車",
"mountain_bike": "越野單車",
"foot": "跑步/遠足",
"motorcycle": "電單車",
"water": "水上活動",
"railway": "鐵路"
},
"surface": {
"unknown": "Unknown",
"paved": "Paved",
"unpaved": "Unpaved",
"asphalt": "Asphalt",
"concrete": "Concrete",
"cobblestone": "Cobblestone",
"unknown": "未知",
"paved": "鋪砌路面",
"unpaved": "未鋪砌路面",
"asphalt": "瀝青路",
"concrete": "混凝土",
"cobblestone": "鵝卵石",
"paving_stones": "鋪路石",
"sett": "石板",
"metal": "Metal",
"wood": "Wood",
"compacted": "Compacted gravel",
"fine_gravel": "Fine gravel",
"gravel": "Gravel",
"pebblestone": "Pebblestone",
"rock": "Rock",
"dirt": "Dirt",
"ground": "Ground",
"earth": "Earth",
"mud": "Mud",
"sand": "Sand",
"grass": "Grass",
"grass_paver": "Grass paver",
"clay": "Clay",
"stone": "Stone"
"metal": "金屬",
"wood": "木材",
"compacted": "壓實的礫石",
"fine_gravel": "細礫",
"gravel": "砂礫",
"pebblestone": "卵石",
"rock": "岩石",
"dirt": "泥土",
"ground": "地面",
"earth": "土地",
"mud": "泥地",
"sand": "沙粒",
"grass": "草地",
"grass_paver": "草坪",
"clay": "黏土",
"stone": "石頭"
},
"highway": {
"unknown": "Unknown",
"motorway": "Highway",
"motorway_link": "Highway link",
"trunk": "Primary road",
"trunk_link": "Primary road link",
"primary": "Primary road",
"primary_link": "Primary road link",
"secondary": "Secondary road",
"secondary_link": "Secondary road link",
"tertiary": "Tertiary road",
"tertiary_link": "Tertiary road link",
"unclassified": "Minor road",
"residential": "Residential road",
"living_street": "Living street",
"service": "Service road",
"track": "Track",
"footway": "Footway",
"path": "Path",
"pedestrian": "Pedestrian",
"cycleway": "Cycleway",
"steps": "Steps",
"road": "Road",
"bridleway": "Horseriding path",
"platform": "Platform",
"unknown": "未知類型",
"motorway": "高速公路",
"motorway_link": "高速公路引道",
"trunk": "快速公路",
"trunk_link": "快速公路連接路",
"primary": "快速公路",
"primary_link": "快速公路連接路",
"secondary": "主要道路",
"secondary_link": "主要道路連接路",
"tertiary": "支路",
"tertiary_link": "支路連接路",
"unclassified": "小路",
"residential": "居住區道路",
"living_street": "住宅街道",
"service": "輔助道路",
"track": "小徑(未鋪設道路)",
"footway": "",
"path": "小徑",
"pedestrian": "行人路",
"cycleway": "單車徑",
"steps": "石級",
"road": "道路",
"bridleway": "馬道",
"platform": "停靠站台",
"raceway": "競賽賽道",
"rest_area": "Rest area",
"abandoned": "Abandoned",
"services": "Services",
"corridor": "Corridor",
"bus_stop": "Bus stop",
"busway": "Busway",
"elevator": "Elevator",
"via_ferrata": "Via ferrata",
"proposed": "已規劃但未興建的道路",
"construction": "Road under construction"
"rest_area": "停車區",
"abandoned": "廢棄道路",
"services": "服務區",
"corridor": "走廊",
"bus_stop": "巴士站",
"busway": "巴士線",
"elevator": "升降機",
"via_ferrata": "鐵鎖攀岩",
"proposed": "未興建的道路",
"construction": "興建中的道路"
},
"sac_scale": {
"hiking": "遠足",
"mountain_hiking": "登山遠足",
"demanding_mountain_hiking": "Demanding mountain hiking",
"demanding_mountain_hiking": "高難度登山路徑 (T3級)",
"alpine_hiking": "高山遠足",
"demanding_alpine_hiking": "Demanding alpine hiking",
"difficult_alpine_hiking": "Difficult alpine hiking"
"demanding_alpine_hiking": "高難度登山路徑 (T5級)",
"difficult_alpine_hiking": "高難度登山路徑 (T6級)"
},
"mtb_scale": "MTB scale",
"mtb_scale": "越野單車徑難度分級",
"error": {
"from": "The start point is too far from the nearest road",
"via": "The via point is too far from the nearest road",
"to": "The end point is too far from the nearest road",
"distance": "The end point is too far from the start point",
"connection": "No connection found between the points",
"timeout": "Route calculation took too long, try adding points closer together"
"from": "起點離最近的道路太遠",
"via": "途徑點離最近的道路太遠",
"to": "終點離最近的道路太遠",
"distance": "起點到終點的距離太遠",
"connection": "找不到連接途徑點的路線",
"timeout": "軌跡計算耗時太長,請嘗試減少點與點的距離"
}
},
"scissors": {
"tooltip": "Crop or split",
"crop": "Crop",
"split_as": "Split the trace into",
"help_invalid_selection": "Select a trace to crop or split.",
"help": "Use the slider to crop the trace, or split it by clicking on one of the split markers or on the trace itself."
"tooltip": "裁剪或拆分",
"crop": "裁剪",
"split_as": "將軌跡拆分為",
"help_invalid_selection": "須先選擇要裁剪或拆分的軌跡。",
"help": "移動滑塊以確認裁剪範圍,或點選軌跡上的分割標記以拆分。"
},
"time": {
"tooltip": "Manage time data",
"start": "Start",
"end": "End",
"total_time": "Moving time",
"pick_date": "Pick a date",
"artificial": "Create realistic time data",
"update": "Update time data",
"help": "Use the form to set new time data.",
"help_invalid_selection": "Select a single trace to manage its time data."
"tooltip": "管理時間資料",
"start": "開始",
"end": "結束",
"total_time": "移動時間",
"pick_date": "選擇日期",
"artificial": "建立實際時間資料",
"update": "更新時間資料",
"help": "使用表單設定新的時間資料。",
"help_invalid_selection": "選擇一個軌跡來管理時間資料。"
},
"merge": {
"merge_traces": "Connect the traces",
"merge_contents": "Merge the contents and keep the traces disconnected",
"merge_selection": "Merge selection",
"remove_gaps": "Remove time gaps between traces",
"tooltip": "Merge items together",
"help_merge_traces": "Connecting the selected traces will create a single continuous trace.",
"help_cannot_merge_traces": "Your selection must contain several traces to connect them.",
"help_merge_contents": "Merging the contents of the selected items will group all the contents inside the first item.",
"help_cannot_merge_contents": "Your selection must contain several items to merge their contents.",
"selection_tip": "Tip: use {KEYBOARD_SHORTCUT} to add items to the selection."
"merge_traces": "合併為一條連續軌跡",
"merge_contents": "合併但保持軌跡獨立",
"merge_selection": "合併",
"remove_gaps": "刪除軌跡的時間間隔",
"tooltip": "合併項目",
"help_merge_traces": "連接所選內容並建立一個連續的軌跡。",
"help_cannot_merge_traces": "須先選擇多個檔案以合併。",
"help_merge_contents": "合併所選內容並將結果儲存於第一個檔案。",
"help_cannot_merge_contents": "須先選擇多個檔案以合併。",
"selection_tip": "可使用 {KEYBOARD_SHORTCUT} 新增項目至選擇中。"
},
"extract": {
"tooltip": "Extract contents to separate items",
"button": "Extract",
"help": "Extracting the contents of the selected items will create a separate item for each of their contents.",
"help_invalid_selection": "Your selection must contain items with multiple traces to extract them."
"tooltip": "提取為多個獨立項目",
"button": "提取",
"help": "該操作將為每個軌跡建立一個單獨的檔案。",
"help_invalid_selection": "須先選擇包含多個軌跡的檔案以提取。"
},
"elevation": {
"button": "Request elevation data",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help_no_selection": "Select a file item to request elevation data."
"button": "請求海拔資料",
"help": "請求成功後將移除原有的海拔資料,並使用 Mapterhorn 的海拔資料替換原有資料。",
"help_no_selection": "選擇要請求海拔資料的檔案。"
},
"waypoint": {
"tooltip": "Create and edit points of interest",
"icon": "Icon",
"link": "Link",
"longitude": "Longitude",
"latitude": "Latitude",
"create": "Create point of interest",
"add": "Add point of interest to file",
"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": "Select a file to create or edit points of interest."
"tooltip": "建立或編輯興趣點",
"icon": "圖示",
"link": "連結",
"longitude": "經度",
"latitude": "緯度",
"create": "新增興趣點",
"add": "將興趣點加入到檔案",
"help": "通過表單建立新興趣點,或點選現有興趣點以編輯。 點選地圖並填充坐標點,或拖動興趣點以移動坐標。",
"help_no_selection": "選擇檔案以建立或編輯興趣點。"
},
"reduce": {
"tooltip": "Reduce the number of GPS points",
"tolerance": "Tolerance",
"number_of_points": "Number of GPS points",
"tooltip": "精簡 GPS 點數量",
"tolerance": "最大間距",
"number_of_points": "GPS 點數量",
"button": "簡化",
"help": "Use the slider to choose the number of GPS points to keep.",
"help_no_selection": "Select a trace to reduce the number of its GPS points."
"help": "移動滑塊以調整要保留的 GPS 點數量。",
"help_no_selection": "選擇一個軌跡以減少其 GPS 點的數量。"
},
"clean": {
"tooltip": "Clean GPS points and points of interest with a rectangle selection",
"delete_trackpoints": "Delete GPS points",
"delete_waypoints": "Delete points of interest",
"delete_inside": "Delete inside selection",
"delete_outside": "Delete outside selection",
"button": "Delete",
"help": "Select a rectangle area on the map to remove GPS points and points of interest.",
"help_no_selection": "Select a trace to clean GPS points and points of interest."
"tooltip": "使用矩形選區清除項目",
"delete_trackpoints": "刪除 GPS 點",
"delete_waypoints": "刪除興趣點",
"delete_inside": "清除選區內部項目",
"delete_outside": "清除選區外的項目",
"button": "刪除",
"help": "在地圖上繪製矩形選區以清除。",
"help_no_selection": "選擇一個軌跡以清除其 GPS 點和興趣點。"
}
},
"layers": {
"settings": "Layer settings",
"settings_help": "Select the map layers you want to show in the interface, add custom ones, and adjust their settings.",
"selection": "Layer selection",
"settings": "圖層設定",
"settings_help": "選擇要在介面中顯示的地圖圖層,或加入自訂圖層,並作出必要調整。",
"selection": "選擇圖層",
"custom_layers": {
"title": "Custom layers",
"new": "New custom layer",
"edit": "Edit custom layer",
"urls": "URL(s)",
"url_placeholder": "WMTS, WMS or MapLibre style JSON",
"max_zoom": "Max zoom",
"layer_type": "Layer type",
"basemap": "Basemap",
"overlay": "Overlay",
"create": "Create layer",
"update": "Update layer"
"title": "自訂圖層",
"new": "新建自訂圖層",
"edit": "編輯自訂圖層",
"urls": "URL",
"url_placeholder": "WMTSWMS MapLibre style JSON",
"max_zoom": "最大縮放等級",
"layer_type": "圖層類型",
"basemap": "底圖",
"overlay": "疊加層",
"create": "新增圖層",
"update": "更新圖層"
},
"opacity": "Overlay opacity",
"terrain": "Terrain source",
"opacity": "圖層透明度",
"terrain": "地形來源",
"label": {
"basemaps": "Basemaps",
"overlays": "Overlays",
"custom": "Custom",
"world": "World",
"countries": "Countries",
"belgium": "Belgium",
"bulgaria": "Bulgaria",
"finland": "Finland",
"france": "France",
"new_zealand": "New Zealand",
"norway": "Norway",
"spain": "Spain",
"sweden": "Sweden",
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"topo": "Topo",
"satellite": "Satellite",
"basemaps": "底圖",
"overlays": "疊加層",
"custom": "自訂",
"world": "世界",
"countries": "國家/地區",
"belgium": "比利時",
"bulgaria": "保加利亞",
"finland": "芬蘭",
"france": "法國",
"new_zealand": "紐西蘭",
"norway": "挪威",
"spain": "西班牙",
"sweden": "瑞典",
"switzerland": "瑞士",
"united_kingdom": "英國",
"united_states": "美國",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
@@ -314,108 +316,108 @@
"utagawaVTT": "UtagawaMTB",
"linz": "LINZ Topo",
"linzTopo": "LINZ Topo50",
"swisstopoRaster": "swisstopo Raster",
"swisstopoVector": "swisstopo Vector",
"swisstopoSatellite": "swisstopo Satellite",
"swisstopoRaster": "swisstopo 柵格",
"swisstopoVector": "swisstopo 向量",
"swisstopoSatellite": "swisstopo 衛星地圖",
"ignBe": "IGN Topo",
"ignFrPlan": "IGN Plan",
"ignFrTopo": "IGN Topo",
"ignFrScan25": "IGN SCAN25",
"ignFrSatellite": "IGN Satellite",
"ignFrSatellite": "IGN 衛星地圖",
"ignEs": "IGN Topo",
"ignEsSatellite": "IGN Satellite",
"ordnanceSurvey": "Ordnance Survey",
"ordnanceSurvey": "Ordnance Survey(英國地形測量局)",
"norwayTopo": "Topografisk Norgeskart 4",
"finlandTopo": "Lantmäteriverket Terrängkarta",
"finlandTopo": "Lantmteriverket Terrngkarta",
"bgMountains": "BGMountains",
"usgs": "USGS",
"bikerouterGravel": "bikerouter.de Gravel",
"cyclOSMlite": "CyclOSM Lite",
"mapterhornHillshade": "Mapterhorn Hillshade",
"openRailwayMap": "OpenRailwayMap",
"swisstopoSlope": "swisstopo Slope",
"swisstopoHiking": "swisstopo Hiking",
"swisstopoHikingClosures": "swisstopo Hiking Closures",
"swisstopoCycling": "swisstopo Cycling",
"swisstopoCyclingClosures": "swisstopo Cycling Closures",
"swisstopoMountainBike": "swisstopo MTB",
"swisstopoMountainBikeClosures": "swisstopo MTB Closures",
"swisstopoSkiTouring": "swisstopo Ski Touring",
"swisstopoSlope": "swisstopo 地形",
"swisstopoHiking": "swisstopo 遠足",
"swisstopoHikingClosures": "swisstopo 登山封閉路線",
"swisstopoCycling": "swisstopo 單車",
"swisstopoCyclingClosures": "swisstopo 單車封閉路線",
"swisstopoMountainBike": "swisstopo 越野單車",
"swisstopoMountainBikeClosures": "swisstopo 越野單車封閉路線",
"swisstopoSkiTouring": "swisstopo 滑雪巡遊",
"ignFrCadastre": "IGN Cadastre",
"ignSlope": "IGN Slope",
"ignSkiTouring": "IGN Ski Touring",
"waymarked_trails": "Waymarked Trails",
"waymarkedTrailsHiking": "Hiking",
"waymarkedTrailsCycling": "Cycling",
"waymarkedTrailsMTB": "MTB",
"waymarkedTrailsSkating": "Skating",
"waymarkedTrailsHorseRiding": "Horse Riding",
"waymarkedTrailsWinter": "Winter",
"points_of_interest": "Points of interest",
"food": "Food",
"bakery": "Bakery",
"food-store": "Food Store",
"eat-and-drink": "Eat and Drink",
"amenities": "Amenities",
"toilets": "Toilets",
"water": "Water",
"shower": "Shower",
"shelter": "Shelter",
"cemetery": "Cemetery",
"motorized": "Cars and Motorcycles",
"fuel-station": "Fuel Station",
"parking": "Parking",
"garage": "Garage",
"barrier": "Barrier",
"tourism": "Tourism",
"attraction": "Attraction",
"viewpoint": "Viewpoint",
"hotel": "Hotel",
"campsite": "Campsite",
"hut": "Hut",
"picnic": "Picnic Area",
"summit": "Summit",
"pass": "Pass",
"climbing": "Climbing",
"bicycle": "Bicycle",
"bicycle-parking": "Bicycle Parking",
"bicycle-rental": "Bicycle Rental",
"bicycle-shop": "Bicycle Shop",
"public-transport": "Public Transport",
"railway-station": "Railway Station",
"tram-stop": "Tram Stop",
"bus-stop": "Bus Stop",
"ferry": "Ferry",
"ignSlope": "IGN 地形",
"ignSkiTouring": "IGN 滑雪巡遊",
"waymarked_trails": "標記路線",
"waymarkedTrailsHiking": "遠足",
"waymarkedTrailsCycling": "單車",
"waymarkedTrailsMTB": "越野單車",
"waymarkedTrailsSkating": "滑冰",
"waymarkedTrailsHorseRiding": "騎馬",
"waymarkedTrailsWinter": "冬季路線",
"points_of_interest": "興趣點",
"food": "食物",
"bakery": "麵包店",
"food-store": "食品店",
"eat-and-drink": "餐飲店",
"amenities": "便利設施",
"toilets": "廁所",
"water": "飲用水",
"shower": "淋浴",
"shelter": "庇護所",
"cemetery": "墓地",
"motorized": "汽車和電單車",
"fuel-station": "油站",
"parking": "停車場",
"garage": "車庫",
"barrier": "障礙物",
"tourism": "旅游",
"attraction": "景點",
"viewpoint": "觀景台",
"hotel": "酒店",
"campsite": "營地",
"hut": "小屋",
"picnic": "野餐區",
"summit": "頂峰",
"pass": "山坳",
"climbing": "攀爬",
"bicycle": "單車",
"bicycle-parking": "單車架",
"bicycle-rental": "單車出租店",
"bicycle-shop": "單車店",
"public-transport": "公共交通",
"railway-station": "火車站",
"tram-stop": "電車站",
"bus-stop": "巴士站",
"ferry": "渡口",
"mapterhorn": "Mapterhorn"
}
},
"chart": {
"settings": "Elevation profile settings"
"settings": "海拔剖面圖設定"
},
"quantities": {
"distance": "Distance",
"elevation": "Elevation",
"elevation_gain_loss": "Elevation gain and loss",
"temperature": "Temperature",
"speed": "Speed",
"pace": "Pace",
"heartrate": "Heart rate",
"cadence": "Cadence",
"power": "Power",
"slope": "Slope",
"surface": "Surface",
"highway": "Category",
"time": "Time",
"moving": "Moving",
"total": "Total",
"osm_extensions": "OpenStreetMap data"
"distance": "距離",
"elevation": "海拔",
"elevation_gain_loss": "累計爬升和下降",
"temperature": "温度",
"speed": "速度",
"pace": "配速",
"heartrate": "心率",
"cadence": "踏頻",
"power": "功率",
"slope": "坡度",
"surface": "路面",
"highway": "類型",
"time": "時間",
"moving": "運動",
"total": "全部",
"osm_extensions": "OpenStreetMap 資料"
},
"units": {
"meters": "m",
"feet": "ft",
"kilometers": "km",
"miles": "mi",
"nautical_miles": "nm",
"meters": "",
"feet": "英呎",
"kilometers": "公里",
"miles": "英里",
"nautical_miles": "海里",
"celsius": "°C",
"fahrenheit": "°F",
"kilometers_per_hour": "km/h",
@@ -423,136 +425,136 @@
"minutes_per_kilometer": "min/km",
"minutes_per_mile": "min/mi",
"minutes_per_nautical_mile": "min/nm",
"knots": "kn",
"knots": "",
"heartrate": "bpm",
"cadence": "rpm",
"power": "W"
},
"gpx": {
"file": "File",
"files": "Files",
"track": "Track",
"tracks": "Tracks",
"segment": "Segment",
"segments": "Segments",
"waypoint": "Point of interest",
"waypoints": "Points of interest",
"file": "檔案",
"files": "檔案",
"track": "軌跡",
"tracks": "軌跡",
"segment": "路段",
"segments": "路段",
"waypoint": "興趣點",
"waypoints": "興趣點",
"symbol": {
"alert": "Alert",
"anchor": "Anchor",
"bank": "Bank",
"beach": "Beach",
"bike_trail": "Bike Trail",
"binoculars": "Binoculars",
"bridge": "Bridge",
"building": "Building",
"campground": "Campsite",
"car": "Car",
"car_repair": "Garage",
"convenience_store": "Convenience Store",
"crossing": "Crossing",
"department_store": "Department Store",
"drinking_water": "Water",
"exit": "Exit",
"lodge": "Hut",
"lodging": "Accommodation",
"forest": "Forest",
"gas_station": "Fuel Station",
"ground_transportation": "Ground Transportation",
"hotel": "Hotel",
"house": "House",
"information": "Information",
"park": "Park",
"parking_area": "Parking",
"pharmacy": "Pharmacy",
"picnic_area": "Picnic Area",
"restaurant": "Restaurant",
"restricted_area": "Restricted Area",
"restroom": "Toilets",
"road": "Road",
"scenic_area": "Scenic Area",
"shelter": "Shelter",
"shopping_center": "Shopping Center",
"shower": "Shower",
"summit": "Summit",
"telephone": "Telephone",
"tunnel": "Tunnel",
"water_source": "Water Source"
"alert": "警告",
"anchor": "錨點",
"bank": "銀行",
"beach": "海灘",
"bike_trail": "單車徑",
"binoculars": "望遠鏡",
"bridge": "",
"building": "大廈",
"campground": "營地",
"car": "車輛",
"car_repair": "車庫",
"convenience_store": "便利店",
"crossing": "交叉路口",
"department_store": "百貨店",
"drinking_water": "飲用水",
"exit": "出口",
"lodge": "小屋",
"lodging": "住宿",
"forest": "森林",
"gas_station": "油站",
"ground_transportation": "地面交通",
"hotel": "酒店",
"house": "住宅",
"information": "資訊",
"park": "公園",
"parking_area": "停車場",
"pharmacy": "藥房",
"picnic_area": "野餐區",
"restaurant": "餐廳",
"restricted_area": "管制區域",
"restroom": "廁所",
"road": "道路",
"scenic_area": "景區",
"shelter": "庇護所",
"shopping_center": "購物中心",
"shower": "淋浴",
"summit": "山峰",
"telephone": "電話",
"tunnel": "隧道",
"water_source": "水源"
}
},
"homepage": {
"website": "Website",
"home": "Home",
"app": "App",
"contact": "Contact",
"website": "官方網站",
"home": "首頁",
"app": "應用程式",
"contact": "聯絡我們",
"reddit": "Reddit",
"facebook": "Facebook",
"github": "GitHub",
"crowdin": "Crowdin",
"email": "Email",
"contribute": "Contribute",
"supported_by": "supported by",
"features": "Features",
"route_planning": "Route planning",
"route_planning_description": "An intuitive interface to create itineraries tailored to each sport, based on OpenStreetMap data.",
"file_processing": "Advanced file processing",
"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": "Global and local maps",
"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_description": "An interactive elevation profile with detailed statistics to analyze recorded activities and future objectives.",
"philosophy": "Philosophy",
"foss": "Free, ad-free and open source",
"foss_description": "The website is free to use, without ads, and the source code is publicly available on GitHub.",
"privacy": "Privacy-friendly",
"privacy_description": "Your GPX files never leave your browser. No tracking, no data collection.",
"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.",
"support_button": "Support gpx.studio on Open Collective",
"translate_button": "Help translate the website on Crowdin"
"email": "電郵",
"contribute": "參與貢獻",
"supported_by": "技術支援",
"features": "功能",
"route_planning": "路線規劃",
"route_planning_description": "基於 OpenStreetMap 數據,在直觀的介面中為每項運動建立量身定製的行程。",
"file_processing": "高級檔案處理",
"file_processing_description": "一系列常見的檔案處理工具,支援對多個檔案同時進行操作。",
"maps": "全球和本地地圖",
"maps_description": "內建大量地圖底圖、疊加圖層和興趣點,用於幫助規劃戶外冒險或可視化成果。",
"data_visualization": "數據可視化",
"data_visualization_description": "可互動的海拔剖面圖,帶有詳細的統計數據,用於分析已記錄的活動和規劃中的目標。",
"philosophy": "宗旨",
"foss": "免費、無廣告、開源",
"foss_description": "此網站可自由使用,無廣告,原始碼可在 GitHub 上公開查閱。",
"privacy": "注重隱私",
"privacy_description": "你的 GPX 檔案永遠不會離開你的瀏覽器。我們不會跟蹤使用者的使用行為,也不會收集使用者產生的資料。",
"community": "由社區驅動",
"community_description": "gpx.studio 有一個絕讚的社區,它通過社區成員的捐助持續營運。它通過社區的力量,不斷增加新的功能、修復 bug,並支援多種語言。",
"support_button": " Open Collective 上支持 gpx.studio",
"translate_button": " Crowdin 上協助翻譯"
},
"docs": {
"translate": "Improve the translation on Crowdin",
"answer_not_found": "Did not find what you were looking for?",
"ask_on_reddit": "Ask the community on Reddit",
"translate": " Crowdin 上改進此翻譯",
"answer_not_found": "找不到您想要的內容?",
"ask_on_reddit": " Reddit 上詢問社區",
"search": {
"search": "Search",
"clear": "Clear",
"cancel": "Cancel",
"recent": "Recent searches",
"no_recent": "No recent searches",
"save": "Save this search",
"remove": "Remove this search from history",
"favorites": "Favorites",
"remove_favorite": "Remove this search from favorites",
"to_select": "to select",
"to_navigate": "to navigate",
"to_close": "to close",
"no_results": "No results for",
"no_results_suggestion": "Try searching for"
"search": "搜尋",
"clear": "清除",
"cancel": "取消",
"recent": "最近搜尋",
"no_recent": "沒有近期的搜尋紀錄",
"save": "保存至搜尋歷史",
"remove": "從搜尋歷史中移除",
"favorites": "我的最愛",
"remove_favorite": "取消收藏",
"to_select": "選擇",
"to_navigate": "切換",
"to_close": "退出",
"no_results": "沒有找到相關資料:",
"no_results_suggestion": "請嘗試以下關鍵詞:"
}
},
"embedding": {
"title": "Create your own map",
"maptiler_key": "MapTiler key (optional, only required for MapTiler maps)",
"file_urls": "File URLs (separated by commas)",
"drive_ids": "Google Drive file IDs (separated by commas)",
"basemap": "Basemap",
"height": "Height",
"fill_by": "Fill by",
"none": "None",
"show_controls": "Show controls",
"manual_camera": "Manual camera",
"manual_camera_description": "You can move the map below to adjust the camera position.",
"latitude": "Latitude",
"longitude": "Longitude",
"zoom": "Zoom",
"pitch": "Pitch",
"bearing": "Bearing",
"preview": "Preview",
"code": "Integration code"
"title": "建立您的地圖",
"maptiler_key": "MapTiler key (可選,僅在使用 MapTiler 地圖時需要提供)",
"file_urls": "檔案連結(英文逗號分隔)",
"drive_ids": "Google 雲端硬碟檔案 IDs(英文逗號分隔)",
"basemap": "底圖",
"height": "高度",
"fill_by": "填充方式",
"none": "無填充",
"show_controls": "顯示控制項",
"manual_camera": "手動調整視角",
"manual_camera_description": "移動下方地圖以調整相機位置。",
"latitude": "緯度",
"longitude": "經度",
"zoom": "縮放",
"pitch": "傾角",
"bearing": "方位",
"preview": "預覽",
"code": "整合代碼"
},
"webgl2_required": "WebGL 2 is required to display the map.",
"enable_webgl2": "Learn how to enable WebGL 2 in your browser",
"page_not_found": "page not found"
"webgl2_required": "須先啟用 WebGL 2 才能顯示地圖。",
"enable_webgl2": "學習如何在瀏覽器中啟用 WebGL 2",
"page_not_found": "無法找到相關頁面"
}
+19 -17
View File
@@ -156,7 +156,7 @@
"tertiary_link": "乡道/支路的连接路段",
"unclassified": "小型道路",
"residential": "居住区道路",
"living_street": "生活性街道",
"living_street": "住宅街道",
"service": "服务性道路",
"track": "小径(未铺设道路)",
"footway": "步行道路",
@@ -187,7 +187,7 @@
"demanding_alpine_hiking": "相对简单的攀爬部分,UIAA I-II 级(T5",
"difficult_alpine_hiking": "更长的攀爬部分,UIAA II 级(T6"
},
"mtb_scale": "山地地形",
"mtb_scale": "山地自行车难度分级",
"error": {
"from": "起点离最近的道路太远",
"via": "途径点离最近的道路太远",
@@ -222,9 +222,9 @@
"remove_gaps": "删除轨迹间的时间间隔",
"tooltip": "合并要素",
"help_merge_traces": "连接所选内容并生成一个连续轨迹。",
"help_cannot_merge_traces": "须先选择多个文件以合并",
"help_cannot_merge_traces": "须先选择多个文件以合并",
"help_merge_contents": "合并所选内容并将结果存储于第一个文件。",
"help_cannot_merge_contents": "须先选择多个文件以合并",
"help_cannot_merge_contents": "须先选择多个文件以合并",
"selection_tip": "可使用 {KEYBOARD_SHORTCUT} 进行多选。"
},
"extract": {
@@ -235,7 +235,7 @@
},
"elevation": {
"button": "请求海拔数据",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help": "请求成功后将移除原有的海拔数据,并使用 Mapterhorn 的海拔数据替换原有数据。",
"help_no_selection": "选择要请求海拔数据的文件。"
},
"waypoint": {
@@ -264,8 +264,8 @@
"delete_inside": "清除选区内部要素",
"delete_outside": "清除选区外部要素",
"button": "删除",
"help": "在地图上绘制矩形选区以清除",
"help_no_selection": "选择一个轨迹以清除其 GPS 点和兴趣点"
"help": "在地图上绘制矩形选区以清除",
"help_no_selection": "选择一个轨迹以清除其 GPS 点和兴趣点"
}
},
"layers": {
@@ -277,7 +277,7 @@
"new": "新建自定义图层",
"edit": "编辑自定义图层",
"urls": "URL(s)",
"url_placeholder": "WMTSWMS 或 MapLibre style JSON",
"url_placeholder": "WMTSWMS 或 MapLibre style JSON",
"max_zoom": "最大缩放等级",
"layer_type": "图层类型",
"basemap": "底图",
@@ -304,8 +304,10 @@
"switzerland": "瑞士",
"united_kingdom": "英国",
"united_states": "美国",
"topo": "Topo",
"satellite": "Satellite",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
@@ -331,7 +333,7 @@
"usgs": "USGS",
"bikerouterGravel": "bikerouter.de Gravel",
"cyclOSMlite": "CyclOSM Lite",
"mapterhornHillshade": "山体阴影",
"mapterhornHillshade": "Mapterhorn Hillshade",
"openRailwayMap": "OpenRailwayMap",
"swisstopoSlope": "Swisstopo Slope",
"swisstopoHiking": "Swisstopo Hiking",
@@ -375,12 +377,12 @@
"hut": "小屋",
"picnic": "野餐区",
"summit": "顶峰",
"pass": "关卡",
"pass": "山坳",
"climbing": "攀爬",
"bicycle": "自行车",
"bicycle-parking": "停车区",
"bicycle-rental": "出租",
"bicycle-shop": "车店",
"bicycle-parking": "自行车停车区",
"bicycle-rental": "自行车出租",
"bicycle-shop": "自行车店",
"public-transport": "公共交通",
"railway-station": "火车站",
"tram-stop": "有轨电车站",
@@ -443,7 +445,7 @@
"bank": "银行",
"beach": "海滩",
"bike_trail": "自行车道",
"binoculars": "观察点",
"binoculars": "望远镜",
"bridge": "桥",
"building": "建筑物",
"campground": "营地",
@@ -502,7 +504,7 @@
"data_visualization": "数据可视化",
"data_visualization_description": "可交互的海拔剖面图,带有详细的统计数据,用于分析已记录的活动和规划中的目标。",
"philosophy": "宗旨",
"foss": "免费、 无广告且开源",
"foss": "免费、无广告且开源",
"foss_description": "该网站可自由使用,无广告,源代码可在 GitHub 上公开查阅。",
"privacy": "注重隐私",
"privacy_description": "你的 GPX 文件永远不会离开你的浏览器。我们不会跟踪用户的使用行为,也不会收集用户产生的数据。",
@@ -19,8 +19,8 @@
return;
}
embeddingOptions = getMergedEmbeddingOptions(options);
if (embeddingOptions.key === '' && embeddingOptions.basemap.startsWith('maptiler')) {
embeddingOptions.basemap = 'openStreetMap';
if (embeddingOptions.key === '' && embeddingOptions.basemap === 'satellite') {
embeddingOptions.basemap = 'libertyTopo';
}
});
</script>
-47
View File
@@ -1,47 +0,0 @@
<?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>

Before

Width:  |  Height:  |  Size: 3.1 KiB

-45
View File
@@ -1,45 +0,0 @@
<?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>

Before

Width:  |  Height:  |  Size: 3.1 KiB