101 Commits

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

Before

Width:  |  Height:  |  Size: 313 KiB

After

Width:  |  Height:  |  Size: 339 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 729 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 KiB

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 KiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

+19 -16
View File
@@ -31,10 +31,10 @@ import bikerouterGravel from './custom/bikerouter-gravel.json';
export const maptilerKeyPlaceHolder = 'MAPTILER_KEY';
export const basemaps: { [key: string]: string | StyleSpecification } = {
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',
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}`,
esriSatellite: {
version: 8,
sources: {
@@ -799,10 +799,10 @@ export type LayerTreeType = { [key: string]: LayerTreeType | boolean };
export const basemapTree: LayerTreeType = {
basemaps: {
world: {
libertyTopo: true,
libertySatellite: true,
osm: true,
osmTopo: true,
maptilerStreets: true,
maptilerTopo: true,
maptilerOutdoors: true,
maptilerSatellite: true,
esriSatellite: true,
openStreetMap: true,
openTopoMap: true,
@@ -936,7 +936,7 @@ export const overpassTree: LayerTreeType = {
};
// Default basemap used
export const defaultBasemap = 'libertyTopo';
export const defaultBasemap = 'maptilerStreets';
// Default overlays used (none)
export const defaultOverlays: LayerTreeType = {
@@ -1025,10 +1025,10 @@ export const defaultOverpassQueries: LayerTreeType = {
export const defaultBasemapTree: LayerTreeType = {
basemaps: {
world: {
libertyTopo: true,
libertySatellite: true,
osm: true,
osmTopo: true,
maptilerStreets: true,
maptilerTopo: true,
maptilerOutdoors: true,
maptilerSatellite: true,
esriSatellite: false,
openStreetMap: true,
openTopoMap: true,
@@ -1487,11 +1487,14 @@ 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.gpx.studio/mapterhorn.json',
encoding: 'terrarium',
url: 'https://tiles.mapterhorn.com/tilejson.json',
},
};
export const defaultTerrainSource = 'mapterhorn';
export const defaultTerrainSource = 'maptiler-dem';
+7 -1
View File
@@ -8,7 +8,7 @@
...others
}: {
iconOnly?: boolean;
company?: 'gpx.studio' | 'github' | 'crowdin' | 'facebook' | 'reddit';
company?: 'gpx.studio' | 'maptiler' | 'github' | 'crowdin' | 'facebook' | 'reddit';
[key: string]: any;
} = $props();
</script>
@@ -19,6 +19,12 @@
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 topoMap from '$lib/assets/img/docs/maps/topo.png?enhanced';
import waymarkedMap from '$lib/assets/img/docs/maps/waymarked.png?enhanced';
import maptilerTopoMap from '$lib/assets/img/home/maptiler-topo.png?enhanced';
import waymarkedMap from '$lib/assets/img/home/waymarked.png?enhanced';
</script>
<div class="relative h-80 aspect-square rounded-2xl shadow-xl overflow-clip">
<enhanced:img src={topoMap} alt="Topo map screenshot." class="absolute" />
<enhanced:img src={maptilerTopoMap} alt="MapTiler Topo map screenshot." class="absolute" />
<enhanced:img
src={waymarkedMap}
alt="Waymarked Trails map screenshot."
@@ -29,7 +29,7 @@ export const defaultEmbeddingOptions = {
key: '',
files: [],
ids: [],
basemap: 'libertyTopo',
basemap: 'maptilerStreets',
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 = 'libertySatellite';
newOptions.basemap = 'maptilerSatellite';
} 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': ['Noto Sans Bold'],
'text-font': ['Open Sans Bold'],
},
paint: {
'text-color': 'black',
@@ -251,11 +251,11 @@ export class GPXLayer {
source: this.fileId,
layout: {
'text-field': '»',
'text-offset': [0, -0.1],
'text-offset': [0, -0.06],
'text-keep-upright': false,
'text-max-angle': 361,
'text-allow-overlap': true,
'text-font': ['Noto Sans Bold'],
'text-font': ['Open Sans Bold'],
'symbol-placement': 'line',
'symbol-spacing': 20,
},
@@ -24,7 +24,7 @@ liveQuery(() => db.overpassdata.toArray()).subscribe((pois) => {
});
export class OverpassLayer {
overpassUrl = 'https://overpass.gpx.studio/api/interpreter';
overpassUrl = 'https://overpass.private.coffee/api/interpreter';
minZoom = 12;
queryZoom = 12;
expirationTime = 7 * 24 * 3600 * 1000;
+16 -50
View File
@@ -10,8 +10,7 @@ import {
import { getLayers } from '$lib/components/map/layer-control/utils';
import { i18n } from '$lib/i18n.svelte';
const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource, distanceUnits } =
settings;
const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource } = settings;
const emptySource: maplibregl.GeoJSONSourceSpecification = {
type: 'geojson',
@@ -58,24 +57,15 @@ 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;
let basemap = get(currentBasemap);
this.buildStyle(basemap).then((style) => {
if (get(currentBasemap) === basemap) map_.setStyle(style);
});
this.buildStyle().then((style) => map_.setStyle(style));
}
async buildStyle(basemap: string): Promise<maplibregl.StyleSpecification> {
async buildStyle(): Promise<maplibregl.StyleSpecification> {
const custom = get(customLayers);
const style: maplibregl.StyleSpecification = {
@@ -89,31 +79,22 @@ 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;
}
style.layers.push(...anchorLayers);
@@ -185,6 +166,7 @@ export class StyleManager {
}
updateTerrain() {
if (this._maptilerKey === '') return;
const map_ = get(this._map);
if (!map_) return;
@@ -207,6 +189,9 @@ 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}`);
@@ -220,40 +205,18 @@ 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)) {
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 &&
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')
) {
// OpenMapTiles styles
layer.layout['text-field'] = [
'coalesce',
['get', `name:${i18n.lang}`],
@@ -261,7 +224,6 @@ export class StyleManager {
];
}
}
}
style.layers.push(layer);
}
if (other.sprite && !style.sprite) {
@@ -274,6 +236,10 @@ 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 topographic basemap.
Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the <a href="https://www.maptiler.com/maps/outdoor-topo/" target="_blank">MapTiler Topo</a> basemap.
</span>
</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://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>.
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>.
</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">
Beweeg over de kaart om de <a href="https://hiking.waymarkedtrails.org" target="_blank">Gemarkeerde sporen wandelen</a> overlay te tonen bovenop de topografische basiskaart.
Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap.
</span>
</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" /> Snelheidseenheden
### <Zap size="16" class="inline-block" style="margin-bottom: 2px" /> Snelheids eenheden
Verander de eenheden die worden gebruikt om snelheden in de interface weer te geven.
Verander de eenheden die worden gebruikt om velocities in de interface weer te geven.
Je kunt kiezen tussen afstand per uur of minuten per afstand, wat geschikter kan zijn voor het uitvoeren van activiteiten.
### <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>
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>.
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>
+2 -2
View File
@@ -1,5 +1,5 @@
---
title: 常見問題
title: FAQ
---
<script>
@@ -8,7 +8,7 @@ title: 常見問題
# { 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: 檔案和統計
title: Files and statistics
---
<script lang="ts">
@@ -19,7 +19,7 @@ title: 檔案和統計
# { 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 }
與文件操作不同,編輯操作可能會修改目前選定文件的內容。
若啟用檔案 [樹形佈局](../files-and-stats),操作也可作用於相關 [軌跡、路段和興趣點](../gpx)
在文件中,所有可通過以上操作修改的項目被稱為 _檔案項_。
注意,除復原和重做外,其餘操作也可通過右鍵點選檔案項來喚出操作菜單。
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.
### <Undo2 size="16" class="inline-block" style="margin-bottom: 2px" /><Redo2 size="16" class="inline-block" style="margin-bottom: 2px" /> 復原和重做
### <Undo2 size="16" class="inline-block" style="margin-bottom: 2px" /><Redo2 size="16" class="inline-block" style="margin-bottom: 2px" /> Undo and redo
復原或重做上一次執行的操作。
只適用於在介面上直接進行的所有操作,不適用於顯示選項、應用設定或地圖導航。
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 size="16" class="inline-block" style="margin-bottom: 2px" /> Info...
用於查看或編輯所選檔案項的名稱和說明資訊。用於查看或編輯所選檔案項的名稱和說明資訊。
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" /> 外觀
### <PaintBucket size="16" class="inline-block" style="margin-bottom: 2px" /> Appearance...
用於調整所選檔案項在地圖上顯示的軌跡顏色、不透明度和闊度。
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" /> 隱藏/顯示
### <EyeOff size="16" class="inline-block" style="margin-bottom: 2px" /> Hide/unhide
切換所選檔案項在地圖上的可見性。
Toggle the visibility of the selected file items on the map.
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> 新建軌跡
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> New track
在所選檔案項中建立一條新軌跡。
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" /> 新建路段
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> New segment
在所選軌跡中建立一個新路段。
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" /> 全選
### <FileStack size="16" class="inline-block" style="margin-bottom: 2px" /> Select all
加入當前檔案層級中所有內容到選取中。
Add all file items in the current hierarchy level to the selection.
### <Maximize size="16" class="inline-block" style="margin-bottom: 2px" /> 置中
### <Maximize size="16" class="inline-block" style="margin-bottom: 2px" /> Center
根據所選檔案項調整地圖顯示中心。
Center the map on the selected file items.
### <ClipboardCopy size="16" class="inline-block" style="margin-bottom: 2px" /> 複製
### <ClipboardCopy size="16" class="inline-block" style="margin-bottom: 2px" /> Copy
複製所選檔案項到剪貼簿。
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" /> 剪下
### <Scissors size="16" class="inline-block" style="margin-bottom: 2px" /> Cut
剪下所選檔案項到剪貼簿。
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" /> 貼上
### <ClipboardPaste size="16" class="inline-block" style="margin-bottom: 2px" /> Paste
如果剪貼簿中的內容與當前檔案層級相容,進行貼上操作。
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" /> 刪除
### <Trash2 size="16" class="inline-block" style="margin-bottom: 2px" /> Delete
刪除所選檔案項。
Delete the selected file items.
+18 -18
View File
@@ -1,5 +1,5 @@
---
title: 檔案
title: File actions
---
<script lang="ts">
@@ -9,44 +9,44 @@ title: 檔案
# { title }
該菜單中的操作非常清晰。
The file actions menu contains a set of pretty self-explanatory file operations.
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> 新增
### <Plus size="16" class="inline-block" style="margin-bottom: 2px" /> New
創造一個新的空白檔案。
Create a new empty file.
### <FolderOpen size="16" class="inline-block" style="margin-bottom: 2px" /> 開啟…
### <FolderOpen size="16" class="inline-block" style="margin-bottom: 2px" /> Open...
開啟本地檔案。
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" /> 複製
### <Copy size="16" class="inline-block" style="margin-bottom: 2px" /> Duplicate
創造當前選中檔案的副本。
Create a copy of the currently selected files.
### <FileX size="16" class="inline-block" style="margin-bottom: 2px" /> 刪除
### <FileX size="16" class="inline-block" style="margin-bottom: 2px" /> Delete
刪除當前選中的檔案。
Delete the currently selected files.
### <FileX size="16" class="inline-block" style="margin-bottom: 2px" /> 全部刪除
### <FileX size="16" class="inline-block" style="margin-bottom: 2px" /> Delete all
刪除全部檔案。
Delete all files.
### <Download size="16" class="inline-block" style="margin-bottom: 2px" /> 匯出...
### <Download size="16" class="inline-block" style="margin-bottom: 2px" /> Export...
保存當前選取檔案到本地。
Open the export dialog to save the currently selected files to your computer.
### <Download size="16" class="inline-block" style="margin-bottom: 2px" /> 匯出所有…
### <Download size="16" class="inline-block" style="margin-bottom: 2px" /> Export all...
保存所有檔案到本地。
Open the export dialog to save all files to your computer.
<DocsNote type="warning">
點選下載按鈕後若無反應,請檢查瀏覽器設定以允許其從 <b>gpx.studio</b> 下載。
If your download does not start after clicking the download button, please check your browser settings to allow downloads from <b>gpx.studio</b>.
</DocsNote>
+2 -2
View File
@@ -1,5 +1,5 @@
---
title: 設定
title: Settings
---
<script lang="ts">
@@ -9,7 +9,7 @@ title: 設定
# { title }
### <Ruler size="16" class="inline-block" style="margin-bottom: 2px" /> 距離單位
### <Ruler size="16" class="inline-block" style="margin-bottom: 2px" /> Distance units
Change the units used to display distances in the interface.
@@ -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">
鼠标悬停在地图上,可在地形图底图上方显示 <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails 徒步路线</a> 叠加层。
Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap.
</span>
</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>
海拔数据来自 <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>
查阅 <a href="https://mapterhorn.com/attribution/" target="_blank">官方文档</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>
+2 -2
View File
@@ -210,7 +210,7 @@ type RoutingProfile =
| 'motorcycle'
| 'water'
| 'railway';
type TerrainSource = 'mapterhorn';
type TerrainSource = 'maptiler-dem' | 'mapterhorn';
type StreetViewSource = 'mapillary' | 'google';
export const settings = {
@@ -308,7 +308,7 @@ export const settings = {
terrainSource: new Setting<TerrainSource>(
'terrainSource',
defaultTerrainSource,
getValueValidator(['mapterhorn'], defaultTerrainSource)
getValueValidator(['maptiler-dem', 'mapterhorn'], defaultTerrainSource)
),
directionMarkers: new Setting('directionMarkers', false),
distanceMarkers: new Setting('distanceMarkers', false),
+10 -8
View File
@@ -7,6 +7,7 @@ import maplibregl from 'maplibre-gl';
import { pointToTile, pointToTileFraction } from '@mapbox/tilebelt';
import 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));
@@ -100,7 +101,7 @@ export function getClosestTrackSegments(
export function getElevation(
points: (TrackPoint | Waypoint | Coordinates)[],
ELEVATION_ZOOM: number = 12,
ELEVATION_ZOOM: number = 13,
tileSize = 512
): Promise<number[]> {
let coordinates = points.map((point) =>
@@ -121,9 +122,10 @@ export function getElevation(
};
let promises = uniqueTiles.map((tile) =>
fetch(`https://tiles.gpx.studio/mapterhorn/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp`, {
cache: 'force-cache',
})
fetch(
`https://api.maptiler.com/tiles/terrain-rgb-v2/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp?key=${PUBLIC_MAPTILER_KEY}`,
{ cache: 'force-cache' }
)
.then((response) => response.blob())
.then(
(blob) =>
@@ -178,10 +180,10 @@ export function getElevation(
_y + (_y + 1 == tileSize ? 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;
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;
return (
ele00 * (1 - dx) * (1 - dy) +
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suïssa",
"united_kingdom": "Regne Unit",
"united_states": "Estats Units",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Švýcarsko",
"united_kingdom": "Velká Británie",
"united_states": "Spojené státy",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Schweiz",
"united_kingdom": "Großbritannien",
"united_states": "USA",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+6 -5
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 Mapterhorn.",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help_no_selection": "Select a file item to request elevation data."
},
"waypoint": {
@@ -304,10 +304,10 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"maptilerStreets": "MapTiler Streets",
"maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
@@ -388,6 +388,7 @@
"tram-stop": "Tram Stop",
"bus-stop": "Bus Stop",
"ferry": "Ferry",
"maptiler-dem": "MapTiler DEM",
"mapterhorn": "Mapterhorn"
}
},
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suiza",
"united_kingdom": "Reino Unido",
"united_states": "Estados Unidos",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topográfico",
"satellite": "Satélite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suitza",
"united_kingdom": "Erresuma Batua",
"united_states": "Ameriketako Estatu Batuak",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Sveitsi",
"united_kingdom": "Iso-Britannia",
"united_states": "Yhdysvallat",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suisse",
"united_kingdom": "Royaume-Uni",
"united_states": "États-Unis",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Svájc",
"united_kingdom": "Anglia",
"united_states": "Amerika",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Swiss",
"united_kingdom": "Britania Raya",
"united_states": "Amerika Serikat",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Svizzera",
"united_kingdom": "United Kingdom",
"united_states": "Stati Uniti",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "스위스",
"united_kingdom": "영국",
"united_states": "미국",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "오픈스트리트맵",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Šveicarija",
"united_kingdom": "Jungtinė Karalystė",
"united_states": "Jungtinės Amerikos Valstijos",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+3 -5
View File
@@ -235,7 +235,7 @@
},
"elevation": {
"button": "Hoogtegegevens opvragen",
"help": "Het opvragen van hoogtegegevens verwijdert de bestaande hoogtegegevens, indien aanwezig, en vervangt deze door gegevens van Mapterhorn.",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help_no_selection": "Selecteer een bestand om hoogte gegevens op te vragen."
},
"waypoint": {
@@ -304,10 +304,8 @@
"switzerland": "Zwitserland",
"united_kingdom": "Verenigd Koninkrijk",
"united_states": "Verenigde Staten",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satelliet",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Sveits",
"united_kingdom": "Storbritannia",
"united_states": "USA",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Szwajcaria",
"united_kingdom": "Wielka Brytania",
"united_states": "Stany Zjednoczone",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suíça",
"united_kingdom": "Reino Unido",
"united_states": "Estados Unidos",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suíça",
"united_kingdom": "Reino Unido",
"united_states": "Estados Unidos",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+24 -26
View File
@@ -28,7 +28,7 @@
"undo": "Anulează",
"redo": "Refă",
"delete": "Șterge",
"delete_all": "Șterge tot",
"delete_all": "Delete all",
"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": "Ecran complet",
"fullscreen": "Full screen",
"settings": "Setări",
"distance_units": "Unități de distanță",
"metric": "Metric",
@@ -62,46 +62,46 @@
"more": "Mai multe...",
"donate": "Donați",
"ctrl": "Ctrl",
"click": "Clic",
"click": "Click",
"drag": "Drag",
"right_click_drag": "Right-click drag",
"metadata": {
"button": "Informații...",
"name": "Nume",
"button": "Info...",
"name": "Name",
"description": "Descriere",
"save": "Salvează"
"save": "Save"
},
"style": {
"button": "Aspect...",
"color": "Culoare",
"color": "Color",
"opacity": "Opacitate",
"width": "Lățime"
"width": "Width"
},
"hide": "Ascunde",
"unhide": "Dezvăluie",
"center": "Centrează",
"open_in": "Deschide în",
"center": "Center",
"open_in": "Open in",
"copy_coordinates": "Copiază coordonatele",
"edit_osm": "Editează în OpenStreetMap"
"edit_osm": "Edit in OpenStreetMap"
},
"toolbar": {
"routing": {
"tooltip": "Planifică sau editează o rută",
"activity": "Activitate",
"use_routing": "Rutare",
"use_routing_tooltip": "Conectează puncte de ancorare prin rețeaua rutieră sau în linie dreaptă dacă este dezactivată",
"allow_private": "Permite drumuri private",
"use_routing_tooltip": "Connect anchor points via road network, or in a straight line if disabled",
"allow_private": "Allow private roads",
"reverse": {
"button": "Inversează",
"button": "Reverse",
"tooltip": "Reverse the direction of the route"
},
"route_back_to_start": {
"button": "Înapoi la punctul de plecare",
"tooltip": "Conectează ultimul punct al rutei cu punctul de plecare"
"button": "Back to start",
"tooltip": "Connect the last point of the route with the starting point"
},
"round_trip": {
"button": "Călătorie dus-întors",
"tooltip": "Întoarce-te la punctul de plecare pe aceeași rută"
"button": "Round trip",
"tooltip": "Return to the starting point by the same route"
},
"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": "Asfalt",
"asphalt": "Asphalt",
"concrete": "Concrete",
"cobblestone": "Pavaj",
"paving_stones": "Pavaj din pietre",
@@ -140,11 +140,11 @@
"grass": "Iarbă",
"grass_paver": "Pavaj cu iarbă",
"clay": "Clay",
"stone": "Piatră"
"stone": "Stone"
},
"highway": {
"unknown": "Necunoscut",
"motorway": "Autostradă",
"unknown": "Unknown",
"motorway": "Highway",
"motorway_link": "Highway link",
"trunk": "Primary road",
"trunk_link": "Primary road link",
@@ -304,10 +304,8 @@
"switzerland": "Elveția",
"united_kingdom": "Regatul Unit",
"united_states": "Statele Unite ale Americii",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Швейцария",
"united_kingdom": "Великобритания",
"united_states": "Соединенные Штаты Америки",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Švajcarska",
"united_kingdom": "Ujedinjeno Kraljevstvo",
"united_states": "Sjеdinjеnе Američke Državе",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Schweiz",
"united_kingdom": "Storbritannien",
"united_states": "USA",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "İsviçre",
"united_kingdom": "Birleşik Krallık",
"united_states": "Birlişik Devletler",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Швейцарія",
"united_kingdom": "Велика Британія\nВеликобританія",
"united_states": "Сполучені Штати",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
+435 -437
View File
@@ -2,312 +2,310 @@
"metadata": {
"home_title": "線上 GPX 檔案編輯器",
"app_title": "app",
"embed_title": "線上 GPX 檔案編輯器",
"help_title": "幫助",
"404_title": "無法找到相關頁面",
"description": "線上查看、編輯和建立 GPX 檔案,包含高級路線規劃、檔案管理器、精美的地圖和詳細的資料可視化功能。"
"embed_title": "",
"help_title": "",
"404_title": "page not found",
"description": "。"
},
"menu": {
"new": "新建",
"new_file": "新增檔案",
"new_track": "新增路徑",
"new_segment": "新增路段",
"open": "開啟...",
"duplicate": "建立副本",
"copy": "複製",
"paste": "貼上",
"new": "New",
"new_file": "New file",
"new_track": "New track",
"new_segment": "New segment",
"open": "Open...",
"duplicate": "Duplicate",
"copy": "Copy",
"paste": "Paste",
"cut": "剪下",
"export": "匯出……",
"export_all": "匯出所有……",
"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": "深色",
"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",
"street_view_source": "街景原始檔",
"mapillary": "Mapillary",
"google": "Google",
"toggle_street_view": "街景",
"layers": "地圖圖層...",
"distance_markers": "距離標記",
"direction_markers": "方向箭頭",
"help": "幫助",
"more": "更多...",
"donate": "捐贈",
"toggle_street_view": "Street view",
"layers": "Map layers...",
"distance_markers": "Distance markers",
"direction_markers": "Direction arrows",
"help": "Help",
"more": "More...",
"donate": "Donate",
"ctrl": "Ctrl",
"click": "點選",
"drag": "拖動",
"right_click_drag": "右鍵拖動",
"click": "Click",
"drag": "Drag",
"right_click_drag": "Right-click drag",
"metadata": {
"button": "資訊...",
"name": "名稱",
"description": "說明",
"save": "保存"
"button": "Info...",
"name": "Name",
"description": "Description",
"save": "Save"
},
"style": {
"button": "外觀...",
"color": "配色",
"opacity": "透明度",
"width": "闊度"
"button": "Appearance...",
"color": "Color",
"opacity": "Opacity",
"width": "Width"
},
"hide": "隱藏",
"unhide": "取消隱藏",
"center": "置中",
"open_in": "打開於",
"copy_coordinates": "複製座標",
"edit_osm": " OpenStreetMap 中編輯"
"hide": "Hide",
"unhide": "Unhide",
"center": "Center",
"open_in": "Open in",
"copy_coordinates": "Copy coordinates",
"edit_osm": "Edit in OpenStreetMap"
},
"toolbar": {
"routing": {
"tooltip": "規劃或編輯路線",
"activity": "活動",
"use_routing": "路線",
"use_routing_tooltip": "通過路網連接錨點,若停用用直線連接",
"allow_private": "允許私家路",
"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",
"reverse": {
"button": "反向",
"tooltip": "反轉路線方向"
"button": "Reverse",
"tooltip": "Reverse the direction of the route"
},
"route_back_to_start": {
"button": "返回起點",
"tooltip": "連接路線的起點與終點"
"button": "Back to start",
"tooltip": "Connect the last point of the route with the starting point"
},
"round_trip": {
"button": "往返路線",
"tooltip": "按原路返回起點"
"button": "Round trip",
"tooltip": "Return to the starting point by the same route"
},
"start_loop_here": "在此開始循環",
"help_no_file": "選擇軌跡進行編輯,或在地圖上點選以建立新路線。",
"help": "點選地圖以加入新錨點,或拖動現有錨點以改變路線。",
"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.",
"activities": {
"bike": "單車",
"racing_bike": "公路單車",
"gravel_bike": "礫石單車",
"mountain_bike": "越野單車",
"foot": "跑步/遠足",
"motorcycle": "電單車",
"water": "水上活動",
"railway": "鐵路"
"bike": "Bike",
"racing_bike": "Road bike",
"gravel_bike": "Gravel bike",
"mountain_bike": "Mountain bike",
"foot": "Run/hike",
"motorcycle": "Motorcycle",
"water": "Water",
"railway": "Railway"
},
"surface": {
"unknown": "未知",
"paved": "鋪砌路面",
"unpaved": "未鋪砌路面",
"asphalt": "瀝青路",
"concrete": "混凝土",
"cobblestone": "鵝卵石",
"unknown": "Unknown",
"paved": "Paved",
"unpaved": "Unpaved",
"asphalt": "Asphalt",
"concrete": "Concrete",
"cobblestone": "Cobblestone",
"paving_stones": "鋪路石",
"sett": "石板",
"metal": "金屬",
"wood": "木材",
"compacted": "壓實的礫石",
"fine_gravel": "細礫",
"gravel": "砂礫",
"pebblestone": "卵石",
"rock": "岩石",
"dirt": "泥土",
"ground": "地面",
"earth": "土地",
"mud": "泥地",
"sand": "沙粒",
"grass": "草地",
"grass_paver": "草坪",
"clay": "黏土",
"stone": "石頭"
"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"
},
"highway": {
"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": "停靠站台",
"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",
"raceway": "競賽賽道",
"rest_area": "停車區",
"abandoned": "廢棄道路",
"services": "服務區",
"corridor": "走廊",
"bus_stop": "巴士站",
"busway": "巴士線",
"elevator": "升降機",
"via_ferrata": "鐵鎖攀岩",
"proposed": "未興建的道路",
"construction": "興建中的道路"
"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"
},
"sac_scale": {
"hiking": "遠足",
"mountain_hiking": "登山遠足",
"demanding_mountain_hiking": "高難度登山路徑 (T3級)",
"demanding_mountain_hiking": "Demanding mountain hiking",
"alpine_hiking": "高山遠足",
"demanding_alpine_hiking": "高難度登山路徑 (T5級)",
"difficult_alpine_hiking": "高難度登山路徑 (T6級)"
"demanding_alpine_hiking": "Demanding alpine hiking",
"difficult_alpine_hiking": "Difficult alpine hiking"
},
"mtb_scale": "越野單車徑難度分級",
"mtb_scale": "MTB scale",
"error": {
"from": "起點離最近的道路太遠",
"via": "途徑點離最近的道路太遠",
"to": "終點離最近的道路太遠",
"distance": "起點到終點的距離太遠",
"connection": "找不到連接途徑點的路線",
"timeout": "軌跡計算耗時太長,請嘗試減少點與點的距離"
"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"
}
},
"scissors": {
"tooltip": "裁剪或拆分",
"crop": "裁剪",
"split_as": "將軌跡拆分為",
"help_invalid_selection": "須先選擇要裁剪或拆分的軌跡。",
"help": "移動滑塊以確認裁剪範圍,或點選軌跡上的分割標記以拆分。"
"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."
},
"time": {
"tooltip": "管理時間資料",
"start": "開始",
"end": "結束",
"total_time": "移動時間",
"pick_date": "選擇日期",
"artificial": "建立實際時間資料",
"update": "更新時間資料",
"help": "使用表單設定新的時間資料。",
"help_invalid_selection": "選擇一個軌跡來管理時間資料。"
"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."
},
"merge": {
"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} 新增項目至選擇中。"
"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."
},
"extract": {
"tooltip": "提取為多個獨立項目",
"button": "提取",
"help": "該操作將為每個軌跡建立一個單獨的檔案。",
"help_invalid_selection": "須先選擇包含多個軌跡的檔案以提取。"
"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."
},
"elevation": {
"button": "請求海拔資料",
"help": "請求成功後將移除原有的海拔資料,並使用 Mapterhorn 的海拔資料替換原有資料。",
"help_no_selection": "選擇要請求海拔資料的檔案。"
"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."
},
"waypoint": {
"tooltip": "建立或編輯興趣點",
"icon": "圖示",
"link": "連結",
"longitude": "經度",
"latitude": "緯度",
"create": "新增興趣點",
"add": "將興趣點加入到檔案",
"help": "通過表單建立新興趣點,或點選現有興趣點以編輯。 點選地圖並填充坐標點,或拖動興趣點以移動坐標。",
"help_no_selection": "選擇檔案以建立或編輯興趣點。"
"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."
},
"reduce": {
"tooltip": "精簡 GPS 點數量",
"tolerance": "最大間距",
"number_of_points": "GPS 點數量",
"tooltip": "Reduce the number of GPS points",
"tolerance": "Tolerance",
"number_of_points": "Number of GPS points",
"button": "簡化",
"help": "移動滑塊以調整要保留的 GPS 點數量。",
"help_no_selection": "選擇一個軌跡以減少其 GPS 點的數量。"
"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."
},
"clean": {
"tooltip": "使用矩形選區清除項目",
"delete_trackpoints": "刪除 GPS 點",
"delete_waypoints": "刪除興趣點",
"delete_inside": "清除選區內部項目",
"delete_outside": "清除選區外的項目",
"button": "刪除",
"help": "在地圖上繪製矩形選區以清除。",
"help_no_selection": "選擇一個軌跡以清除其 GPS 點和興趣點。"
"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."
}
},
"layers": {
"settings": "圖層設定",
"settings_help": "選擇要在介面中顯示的地圖圖層,或加入自訂圖層,並作出必要調整。",
"selection": "選擇圖層",
"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",
"custom_layers": {
"title": "自訂圖層",
"new": "新建自訂圖層",
"edit": "編輯自訂圖層",
"urls": "URL",
"url_placeholder": "WMTSWMS MapLibre style JSON",
"max_zoom": "最大縮放等級",
"layer_type": "圖層類型",
"basemap": "底圖",
"overlay": "疊加層",
"create": "新增圖層",
"update": "更新圖層"
"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"
},
"opacity": "圖層透明度",
"terrain": "地形來源",
"opacity": "Overlay opacity",
"terrain": "Terrain source",
"label": {
"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",
"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",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
@@ -316,108 +314,108 @@
"utagawaVTT": "UtagawaMTB",
"linz": "LINZ Topo",
"linzTopo": "LINZ Topo50",
"swisstopoRaster": "swisstopo 柵格",
"swisstopoVector": "swisstopo 向量",
"swisstopoSatellite": "swisstopo 衛星地圖",
"swisstopoRaster": "swisstopo Raster",
"swisstopoVector": "swisstopo Vector",
"swisstopoSatellite": "swisstopo Satellite",
"ignBe": "IGN Topo",
"ignFrPlan": "IGN Plan",
"ignFrTopo": "IGN Topo",
"ignFrScan25": "IGN SCAN25",
"ignFrSatellite": "IGN 衛星地圖",
"ignFrSatellite": "IGN Satellite",
"ignEs": "IGN Topo",
"ignEsSatellite": "IGN Satellite",
"ordnanceSurvey": "Ordnance Survey(英國地形測量局)",
"ordnanceSurvey": "Ordnance Survey",
"norwayTopo": "Topografisk Norgeskart 4",
"finlandTopo": "Lantmteriverket Terrngkarta",
"finlandTopo": "Lantmäteriverket Terrängkarta",
"bgMountains": "BGMountains",
"usgs": "USGS",
"bikerouterGravel": "bikerouter.de Gravel",
"cyclOSMlite": "CyclOSM Lite",
"mapterhornHillshade": "Mapterhorn Hillshade",
"openRailwayMap": "OpenRailwayMap",
"swisstopoSlope": "swisstopo 地形",
"swisstopoHiking": "swisstopo 遠足",
"swisstopoHikingClosures": "swisstopo 登山封閉路線",
"swisstopoCycling": "swisstopo 單車",
"swisstopoCyclingClosures": "swisstopo 單車封閉路線",
"swisstopoMountainBike": "swisstopo 越野單車",
"swisstopoMountainBikeClosures": "swisstopo 越野單車封閉路線",
"swisstopoSkiTouring": "swisstopo 滑雪巡遊",
"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",
"ignFrCadastre": "IGN Cadastre",
"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": "渡口",
"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",
"mapterhorn": "Mapterhorn"
}
},
"chart": {
"settings": "海拔剖面圖設定"
"settings": "Elevation profile settings"
},
"quantities": {
"distance": "距離",
"elevation": "海拔",
"elevation_gain_loss": "累計爬升和下降",
"temperature": "温度",
"speed": "速度",
"pace": "配速",
"heartrate": "心率",
"cadence": "踏頻",
"power": "功率",
"slope": "坡度",
"surface": "路面",
"highway": "類型",
"time": "時間",
"moving": "運動",
"total": "全部",
"osm_extensions": "OpenStreetMap 資料"
"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"
},
"units": {
"meters": "",
"feet": "英呎",
"kilometers": "公里",
"miles": "英里",
"nautical_miles": "海里",
"meters": "m",
"feet": "ft",
"kilometers": "km",
"miles": "mi",
"nautical_miles": "nm",
"celsius": "°C",
"fahrenheit": "°F",
"kilometers_per_hour": "km/h",
@@ -425,136 +423,136 @@
"minutes_per_kilometer": "min/km",
"minutes_per_mile": "min/mi",
"minutes_per_nautical_mile": "min/nm",
"knots": "",
"knots": "kn",
"heartrate": "bpm",
"cadence": "rpm",
"power": "W"
},
"gpx": {
"file": "檔案",
"files": "檔案",
"track": "軌跡",
"tracks": "軌跡",
"segment": "路段",
"segments": "路段",
"waypoint": "興趣點",
"waypoints": "興趣點",
"file": "File",
"files": "Files",
"track": "Track",
"tracks": "Tracks",
"segment": "Segment",
"segments": "Segments",
"waypoint": "Point of interest",
"waypoints": "Points of interest",
"symbol": {
"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": "水源"
"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"
}
},
"homepage": {
"website": "官方網站",
"home": "首頁",
"app": "應用程式",
"contact": "聯絡我們",
"website": "Website",
"home": "Home",
"app": "App",
"contact": "Contact",
"reddit": "Reddit",
"facebook": "Facebook",
"github": "GitHub",
"crowdin": "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 上協助翻譯"
"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"
},
"docs": {
"translate": " Crowdin 上改進此翻譯",
"answer_not_found": "找不到您想要的內容?",
"ask_on_reddit": " Reddit 上詢問社區",
"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",
"search": {
"search": "搜尋",
"clear": "清除",
"cancel": "取消",
"recent": "最近搜尋",
"no_recent": "沒有近期的搜尋紀錄",
"save": "保存至搜尋歷史",
"remove": "從搜尋歷史中移除",
"favorites": "我的最愛",
"remove_favorite": "取消收藏",
"to_select": "選擇",
"to_navigate": "切換",
"to_close": "退出",
"no_results": "沒有找到相關資料:",
"no_results_suggestion": "請嘗試以下關鍵詞:"
"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"
}
},
"embedding": {
"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": "整合代碼"
"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"
},
"webgl2_required": "須先啟用 WebGL 2 才能顯示地圖。",
"enable_webgl2": "學習如何在瀏覽器中啟用 WebGL 2",
"page_not_found": "無法找到相關頁面"
"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"
}
+17 -19
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": "请求成功后将移除原有的海拔数据,并使用 Mapterhorn 的海拔数据替换原有数据。",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from 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,10 +304,8 @@
"switzerland": "瑞士",
"united_kingdom": "英国",
"united_states": "美国",
"libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
@@ -333,7 +331,7 @@
"usgs": "USGS",
"bikerouterGravel": "bikerouter.de Gravel",
"cyclOSMlite": "CyclOSM Lite",
"mapterhornHillshade": "Mapterhorn Hillshade",
"mapterhornHillshade": "山体阴影",
"openRailwayMap": "OpenRailwayMap",
"swisstopoSlope": "Swisstopo Slope",
"swisstopoHiking": "Swisstopo Hiking",
@@ -377,12 +375,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": "有轨电车站",
@@ -445,7 +443,7 @@
"bank": "银行",
"beach": "海滩",
"bike_trail": "自行车道",
"binoculars": "望远镜",
"binoculars": "观察点",
"bridge": "桥",
"building": "建筑物",
"campground": "营地",
@@ -504,7 +502,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 === 'satellite') {
embeddingOptions.basemap = 'libertyTopo';
if (embeddingOptions.key === '' && embeddingOptions.basemap.startsWith('maptiler')) {
embeddingOptions.basemap = 'openStreetMap';
}
});
</script>
+47
View File
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Vrstva_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 812 212" style="enable-background:new 0 0 812 212;" xml:space="preserve">
<style type="text/css">
.st0{fill:#3A1888;}
.st1{fill:#03A1C4;}
.st2{fill:#05D0DF;}
.st3{fill:#761FE8;}
.st4{fill:#FFAA01;}
.st5{fill:#F1175D;}
.st6{fill:#FB3A1B;}
.st7{fill:#FBC935;}
.st8{fill:#FFFFFF;}
</style>
<g>
<path class="st0" d="M94.3,164.2c9.2,9.2,33.8,34.3,33.8,34.3c-0.1,0.2,24.4-24.5,34.2-34.2l-34.1-34.1L94.3,164.2z"/>
<path class="st1" d="M128.3,130.2l34.1,34.1c0.1-0.1,0.1-0.1,0.2-0.2l34-34L162.5,96L128.3,130.2z"/>
<path class="st2" d="M196.6,130.1L196.6,130.1c18.9-18.9,18.9-49.4,0.1-68.3L162.5,96L196.6,130.1z"/>
<path class="st3" d="M94.1,96l-34,34c0,0,0,0,0,0l34.1,34.1c0,0,0,0,0.1,0.1l34-34L94.1,96z"/>
<path class="st4" d="M128.3,61.8L162.5,96l34.2-34.2c0,0,0,0-0.1-0.1l-34.1-34.1c0,0,0,0,0,0L128.3,61.8z"/>
<path class="st5" d="M60,61.9c-18.7,18.9-18.6,49.3,0.1,68.1l34-34L60,61.9z"/>
<path class="st6" d="M128.3,61.8L94.2,27.7l-34,34c-0.1,0.1-0.1,0.1-0.2,0.2L94.1,96L128.3,61.8z"/>
<path class="st7" d="M162.5,27.6c-18.9-18.8-49.4-18.8-68.2,0l-0.1,0.1l34.1,34.1L162.5,27.6z"/>
</g>
<path class="st8" d="M303.8,138.6v-34.9c0-8.6-4.5-16.4-13.3-16.4c-8.7,0-13.9,7.8-13.9,16.4v34.9h-16.1V73.4h14.9l1.2,7.9
c3.4-6.6,11-9,17.2-9c7.8,0,15.6,3.2,19.3,12.2c5.8-9.2,13.3-11.9,21.8-11.9c18.5,0,27.6,11.4,27.6,30.9v35.1h-16.1v-35.1
c0-8.6-3.6-15.9-12.3-15.9c-8.7,0-14.1,7.5-14.1,16.1v34.9H303.8z"/>
<path class="st8" d="M430.5,73.5h15.5v65.1h-15.2l-0.8-9.5c-3.7,7.7-13.9,11.4-21.1,11.5c-19.3,0.1-33.6-11.8-33.6-34.6
c0-22.5,14.9-34.2,34-34.1c8.7,0,17,4.1,20.7,10.6L430.5,73.5z M391.4,106c0,12.4,8.6,19.8,19.3,19.8c25.4,0,25.4-39.5,0-39.5
C399.9,86.3,391.4,93.6,391.4,106z"/>
<path class="st8" d="M459.5,165.8V73.5h15.1l1.1,9c5-7.3,13.7-10.4,21.1-10.4c20.1,0,33.4,14.9,33.4,34.1c0,19-12,34.1-32.9,34.1
c-6.9,0-17-2.1-21.7-9.3v34.9H459.5z M514.1,106.1c0-10.2-6.9-18.5-18.5-18.5c-11.6,0-18.5,8.3-18.5,18.5c0,10.2,7.5,18.5,18.5,18.5
C506.6,124.6,514.1,116.3,514.1,106.1z"/>
<path class="st8" d="M559,53.7v19.7h22.2v5.4H559v39.8c0,8.8,1.9,15.1,12,15.1c3.2,0,6.7-1.1,10-2.6l2.2,5.3
c-4.1,2-8.2,3.3-12.3,3.3c-13.9,0-18.4-8.2-18.4-21V78.8h-13.9v-5.4h13.9v-19L559,53.7z"/>
<path class="st8" d="M604.7,52.1c0,6.9-10.4,6.9-10.4,0C594.3,45.2,604.7,45.2,604.7,52.1z M596.1,73.1v65.5h6.5V73.1H596.1z"/>
<path class="st8" d="M627.6,46.2v92.5h-6.5V46.2H627.6z"/>
<path class="st8" d="M730.2,73.4l0.3,11.6c4.1-8.9,13.3-12.3,21.7-12.3c4.9-0.1,9.6,1.2,14,3.8l-2.9,5.3c-3.4-2.1-7.3-3-11.1-3
c-12.2,0.1-21.5,9.9-21.5,21.8v38h-6.5V73.4H730.2z"/>
<g>
<path class="st8" d="M675.1,134.7c-11.5,0-21.4-7.2-25.5-17.4l0,0l0,0c0,0,0,0,0,0l52.8-14c0,0,0,0,0,0.1l5.6-1.5
c-2.3-16.5-16.2-29.3-33-29.3c-18.4,0-33.3,15.2-33.3,34c0,18.8,14.9,34,33.3,34c13.8,0,25.6-8.5,30.6-20.7l-5.3-2.3
C696.2,127.6,686.4,134.7,675.1,134.7z M647.5,106.6c0-15.5,12.3-28.1,27.5-28.1c11.9,0,22,7.7,25.9,18.5L647.9,111
C647.6,109.5,647.5,108.1,647.5,106.6z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

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

After

Width:  |  Height:  |  Size: 3.1 KiB