98 Commits

Author SHA1 Message Date
vcoppe 9ee1c1cd5a New translations en.json (French)
[ci skip]
2026-05-27 21:52:41 +02:00
vcoppe 3720f3bf4e New translations elevation.mdx (Serbian (Latin))
[ci skip]
2026-05-27 20:35:51 +02:00
vcoppe b8580b99ff New translations elevation.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-05-27 20:35:49 +02:00
vcoppe bd3f0b706f New translations elevation.mdx (Latvian)
[ci skip]
2026-05-27 20:35:48 +02:00
vcoppe ab8da39cfa New translations elevation.mdx (Thai)
[ci skip]
2026-05-27 20:35:46 +02:00
vcoppe b97622e663 New translations elevation.mdx (Indonesian)
[ci skip]
2026-05-27 20:35:45 +02:00
vcoppe 38a935db36 New translations elevation.mdx (Portuguese, Brazilian)
[ci skip]
2026-05-27 20:35:43 +02:00
vcoppe d9b73deaa8 New translations elevation.mdx (Vietnamese)
[ci skip]
2026-05-27 20:35:42 +02:00
vcoppe 7425fbfeaa New translations elevation.mdx (Chinese Simplified)
[ci skip]
2026-05-27 20:35:40 +02:00
vcoppe 7638e5dc3c New translations elevation.mdx (Ukrainian)
[ci skip]
2026-05-27 20:35:39 +02:00
vcoppe eea43ae6d2 New translations elevation.mdx (Turkish)
[ci skip]
2026-05-27 20:35:37 +02:00
vcoppe 21cf4d0585 New translations elevation.mdx (Swedish)
[ci skip]
2026-05-27 20:35:36 +02:00
vcoppe 888e7fbb9f New translations elevation.mdx (Russian)
[ci skip]
2026-05-27 20:35:34 +02:00
vcoppe 9b613e7fc9 New translations elevation.mdx (Portuguese)
[ci skip]
2026-05-27 20:35:32 +02:00
vcoppe 8c6ed3819d New translations elevation.mdx (Polish)
[ci skip]
2026-05-27 20:35:31 +02:00
vcoppe 797f11565f New translations elevation.mdx (Norwegian)
[ci skip]
2026-05-27 20:35:30 +02:00
vcoppe c136f58ddf New translations elevation.mdx (Dutch)
[ci skip]
2026-05-27 20:35:28 +02:00
vcoppe 4103bb0840 New translations elevation.mdx (Lithuanian)
[ci skip]
2026-05-27 20:35:27 +02:00
vcoppe b2b911918d New translations elevation.mdx (Korean)
[ci skip]
2026-05-27 20:35:25 +02:00
vcoppe 55db10459a New translations elevation.mdx (Italian)
[ci skip]
2026-05-27 20:35:24 +02:00
vcoppe 0db07cd1d4 New translations elevation.mdx (Hungarian)
[ci skip]
2026-05-27 20:35:22 +02:00
vcoppe dfe9fbe0b4 New translations elevation.mdx (Hebrew)
[ci skip]
2026-05-27 20:35:21 +02:00
vcoppe 2d184a8e04 New translations elevation.mdx (Finnish)
[ci skip]
2026-05-27 20:35:19 +02:00
vcoppe acf355584a New translations elevation.mdx (Basque)
[ci skip]
2026-05-27 20:35:18 +02:00
vcoppe e49767321c New translations elevation.mdx (Greek)
[ci skip]
2026-05-27 20:35:16 +02:00
vcoppe b544dcc373 New translations elevation.mdx (German)
[ci skip]
2026-05-27 20:35:14 +02:00
vcoppe d63dff34a4 New translations elevation.mdx (Danish)
[ci skip]
2026-05-27 20:35:13 +02:00
vcoppe 6da81b38f1 New translations elevation.mdx (Czech)
[ci skip]
2026-05-27 20:35:12 +02:00
vcoppe c53c4ab136 New translations elevation.mdx (Catalan)
[ci skip]
2026-05-27 20:35:10 +02:00
vcoppe a14422be71 New translations elevation.mdx (Belarusian)
[ci skip]
2026-05-27 20:35:09 +02:00
vcoppe a41c600d23 New translations elevation.mdx (Spanish)
[ci skip]
2026-05-27 20:35:07 +02:00
vcoppe d1ace62410 New translations elevation.mdx (French)
[ci skip]
2026-05-27 20:35:06 +02:00
vcoppe ca404985a9 New translations elevation.mdx (Romanian)
[ci skip]
2026-05-27 20:35:04 +02:00
vcoppe f6ffb5afb4 New translations map-controls.mdx (Serbian (Latin))
[ci skip]
2026-05-27 20:29:31 +02:00
vcoppe 796c88258f New translations map-controls.mdx (Chinese Traditional, Hong Kong)
[ci skip]
2026-05-27 20:29:30 +02:00
vcoppe c23af4981a New translations map-controls.mdx (Latvian)
[ci skip]
2026-05-27 20:29:28 +02:00
vcoppe 2a7a444848 New translations map-controls.mdx (Thai)
[ci skip]
2026-05-27 20:29:27 +02:00
vcoppe 947c522187 New translations map-controls.mdx (Indonesian)
[ci skip]
2026-05-27 20:29:25 +02:00
vcoppe 37d6fa3562 New translations map-controls.mdx (Portuguese, Brazilian)
[ci skip]
2026-05-27 20:29:24 +02:00
vcoppe e8ef5ba125 New translations map-controls.mdx (Vietnamese)
[ci skip]
2026-05-27 20:29:22 +02:00
vcoppe e3d787029a New translations map-controls.mdx (Ukrainian)
[ci skip]
2026-05-27 20:29:20 +02:00
vcoppe 6bfd3e9560 New translations map-controls.mdx (Turkish)
[ci skip]
2026-05-27 20:29:19 +02:00
vcoppe ecc4591503 New translations map-controls.mdx (Swedish)
[ci skip]
2026-05-27 20:29:17 +02:00
vcoppe b7b042b44c New translations map-controls.mdx (Russian)
[ci skip]
2026-05-27 20:29:16 +02:00
vcoppe 376ddae828 New translations map-controls.mdx (Portuguese)
[ci skip]
2026-05-27 20:29:14 +02:00
vcoppe ced901d935 New translations map-controls.mdx (Polish)
[ci skip]
2026-05-27 20:29:13 +02:00
vcoppe f3464f235f New translations map-controls.mdx (Norwegian)
[ci skip]
2026-05-27 20:29:11 +02:00
vcoppe 66d7bb7399 New translations map-controls.mdx (Dutch)
[ci skip]
2026-05-27 20:29:10 +02:00
vcoppe 6934def87f New translations map-controls.mdx (Lithuanian)
[ci skip]
2026-05-27 20:29:08 +02:00
vcoppe 491ce645ff New translations map-controls.mdx (Korean)
[ci skip]
2026-05-27 20:29:07 +02:00
vcoppe b924f410ea New translations map-controls.mdx (Italian)
[ci skip]
2026-05-27 20:29:05 +02:00
vcoppe 088d4418b9 New translations map-controls.mdx (Hungarian)
[ci skip]
2026-05-27 20:29:04 +02:00
vcoppe bb312a1bf3 New translations map-controls.mdx (Hebrew)
[ci skip]
2026-05-27 20:29:02 +02:00
vcoppe 90fd5bba21 New translations map-controls.mdx (Finnish)
[ci skip]
2026-05-27 20:29:01 +02:00
vcoppe d6aaccbfa0 New translations map-controls.mdx (Basque)
[ci skip]
2026-05-27 20:28:59 +02:00
vcoppe 7c913e7d0d New translations map-controls.mdx (Greek)
[ci skip]
2026-05-27 20:28:58 +02:00
vcoppe 54d28410bb New translations map-controls.mdx (German)
[ci skip]
2026-05-27 20:28:56 +02:00
vcoppe c521183c16 New translations map-controls.mdx (Danish)
[ci skip]
2026-05-27 20:28:55 +02:00
vcoppe 33b1dff236 New translations map-controls.mdx (Czech)
[ci skip]
2026-05-27 20:28:53 +02:00
vcoppe 6493006f9f New translations map-controls.mdx (Catalan)
[ci skip]
2026-05-27 20:28:51 +02:00
vcoppe 259fe3fec9 New translations map-controls.mdx (Belarusian)
[ci skip]
2026-05-27 20:28:50 +02:00
vcoppe 7678a7f93a New translations map-controls.mdx (Spanish)
[ci skip]
2026-05-27 20:28:48 +02:00
vcoppe 826f58fb9a New translations map-controls.mdx (French)
[ci skip]
2026-05-27 20:28:45 +02:00
vcoppe da33d848a2 New translations map-controls.mdx (Romanian)
[ci skip]
2026-05-27 20:28:44 +02:00
vcoppe 6825228c76 New translations en.json (Serbian (Latin))
[ci skip]
2026-05-27 20:27:11 +02:00
vcoppe 5227e8bcf6 New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
2026-05-27 20:27:09 +02:00
vcoppe 347d40d973 New translations en.json (Latvian)
[ci skip]
2026-05-27 20:27:07 +02:00
vcoppe 3f711505de New translations en.json (Thai)
[ci skip]
2026-05-27 20:27:06 +02:00
vcoppe e2852b721a New translations en.json (Portuguese, Brazilian)
[ci skip]
2026-05-27 20:27:04 +02:00
vcoppe a775f6fb0b New translations en.json (Vietnamese)
[ci skip]
2026-05-27 20:27:02 +02:00
vcoppe 9bf8e365e4 New translations en.json (Chinese Simplified)
[ci skip]
2026-05-27 20:27:00 +02:00
vcoppe 34b6bfe306 New translations en.json (Ukrainian)
[ci skip]
2026-05-27 20:26:59 +02:00
vcoppe 707c1f9c5a New translations map-controls.mdx (Chinese Simplified)
[ci skip]
2026-05-27 20:26:57 +02:00
vcoppe ef722839f4 New translations en.json (Indonesian)
[ci skip]
2026-05-27 20:26:55 +02:00
vcoppe 33ccf3154b New translations en.json (Turkish)
[ci skip]
2026-05-27 20:26:54 +02:00
vcoppe f4629dc0dc New translations en.json (Swedish)
[ci skip]
2026-05-27 20:26:52 +02:00
vcoppe 2393079067 New translations en.json (Russian)
[ci skip]
2026-05-27 20:26:50 +02:00
vcoppe 40972be26a New translations en.json (Portuguese)
[ci skip]
2026-05-27 20:26:49 +02:00
vcoppe 8b7742ef78 New translations en.json (Polish)
[ci skip]
2026-05-27 20:26:47 +02:00
vcoppe 3c15d9d061 New translations en.json (Norwegian)
[ci skip]
2026-05-27 20:26:46 +02:00
vcoppe c56d750bb3 New translations en.json (Lithuanian)
[ci skip]
2026-05-27 20:26:44 +02:00
vcoppe 4dfc1b26b1 New translations en.json (Korean)
[ci skip]
2026-05-27 20:26:42 +02:00
vcoppe 1de19a85eb New translations en.json (Italian)
[ci skip]
2026-05-27 20:26:41 +02:00
vcoppe 3630953f4b New translations en.json (Hungarian)
[ci skip]
2026-05-27 20:26:39 +02:00
vcoppe b211e36ed3 New translations en.json (Hebrew)
[ci skip]
2026-05-27 20:26:36 +02:00
vcoppe fcb3bebdba New translations en.json (Finnish)
[ci skip]
2026-05-27 20:26:34 +02:00
vcoppe 923d61547d New translations en.json (Basque)
[ci skip]
2026-05-27 20:26:33 +02:00
vcoppe aaff9045e4 New translations en.json (Greek)
[ci skip]
2026-05-27 20:26:31 +02:00
vcoppe 22b8880a9e New translations en.json (German)
[ci skip]
2026-05-27 20:26:29 +02:00
vcoppe b7216f9b77 New translations en.json (Danish)
[ci skip]
2026-05-27 20:26:28 +02:00
vcoppe df55eb59f5 New translations en.json (Czech)
[ci skip]
2026-05-27 20:26:26 +02:00
vcoppe a83d9afe51 New translations en.json (Catalan)
[ci skip]
2026-05-27 20:26:24 +02:00
vcoppe e449308563 New translations en.json (Belarusian)
[ci skip]
2026-05-27 20:26:23 +02:00
vcoppe 23179716b1 New translations en.json (Spanish)
[ci skip]
2026-05-27 20:26:21 +02:00
vcoppe b532a5d40a New translations en.json (French)
[ci skip]
2026-05-27 20:26:19 +02:00
vcoppe 78796f9d8f New translations en.json (Romanian)
[ci skip]
2026-05-27 20:26:18 +02:00
vcoppe 17c81e22e0 New translations en.json (Dutch)
[ci skip]
2026-05-27 20:26:16 +02:00
vcoppe ca72b7a368 New translations map-controls.mdx (Chinese Simplified)
[ci skip]
2026-05-25 05:03:14 +02:00
62 changed files with 281 additions and 275 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;
+31 -65
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);
const terrain = this.getCurrentTerrain();
style.sources[terrain.source] = terrainSources[terrain.source];
style.terrain = terrain.exaggeration > 0 ? terrain : undefined;
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,46 +205,23 @@ 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 &&
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'],
];
}
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'],
];
}
}
style.layers.push(layer);
@@ -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 @@ 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">
Pasa el ratón sobre el mapa para que la capa de <a href="https://hiking.waymarkedtrails.org" target="_blank">Caminatas por Sendas Marcadas</a> aparezca superpuesta al mapa base topográfico.
Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap.
</span>
</div>
@@ -18,7 +18,7 @@ Esta herramienta permite añadir datos de elevación a los rastros y [puntos de
<DocsNote>
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>.
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 @@ 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>
+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>
@@ -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"
}
},
+3 -5
View File
@@ -235,7 +235,7 @@
},
"elevation": {
"button": "Solicitar datos de desnivel",
"help": "La solicitud de datos de elevación borrará los datos de elevación existentes, si los hay, y los reemplazará con datos de Mapterhorn.",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help_no_selection": "Seleccione un elemento del archivo para solicitar datos de desnivel."
},
"waypoint": {
@@ -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": "Topo",
"satellite": "Satellite",
"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",
+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": "请求海拔数据",
"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": {
@@ -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",
@@ -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