28 Commits

Author SHA1 Message Date
vcoppe fe8896e870 get styles from github 2026-05-27 20:17:49 +02:00
vcoppe c99517572e update images 2026-05-27 19:40:09 +02:00
vcoppe 0b7f30a7c4 remove maptiler layers 2026-05-27 18:52:15 +02:00
vcoppe fcfaf043c4 fix map localization 2026-05-26 06:28:32 +02:00
vcoppe 0393a330a6 fix loading initial style 2026-05-26 06:18:00 +02:00
vcoppe 2fdb58bc7d switch contour lines based on units 2026-05-25 16:50:28 +02:00
vcoppe c758bda1a9 update tiles endpoint 2026-05-25 15:48:23 +02:00
vcoppe 88e301e2a2 use maptiler satellite 2026-05-25 14:45:03 +02:00
vcoppe 161c664e08 borders 2026-05-25 11:26:49 +02:00
vcoppe a0408ec798 revert rivers 2026-05-25 11:00:55 +02:00
vcoppe 480d5586b9 inverse font color and halo 2026-05-25 10:58:23 +02:00
vcoppe 7b49018593 remove casings 2026-05-25 10:44:53 +02:00
vcoppe 4b447a9b9d revert some of the changes 2026-05-25 10:40:38 +02:00
vcoppe 443feb2bfa road opacities 2026-05-25 10:29:29 +02:00
vcoppe 8710101a78 remove filled areas 2026-05-25 09:59:54 +02:00
vcoppe 2c20148e64 start satellite style 2026-05-24 13:49:43 +02:00
vcoppe ffc0e84788 slightly bigger paths 2026-05-24 00:23:40 +02:00
vcoppe 2d2004e447 small color change 2026-05-24 00:16:55 +02:00
vcoppe 4a7cfc113d vector terrain 2026-05-24 00:13:26 +02:00
vcoppe f03ad5a0e9 colored track casing 2026-05-24 00:04:09 +02:00
vcoppe 7f5b83f9d8 only use surface for coloring 2026-05-23 20:13:47 +02:00
vcoppe 5a8f93e225 different colors depending on surface 2026-05-23 20:10:21 +02:00
vcoppe 668b0f6b23 clearer path names 2026-05-23 19:59:12 +02:00
vcoppe fc1eb5a408 highlight trails 2026-05-23 19:52:04 +02:00
vcoppe 561c7e22b3 first tweaks 2026-05-23 19:17:37 +02:00
vcoppe ce067d4ff0 add custom layer base from openfreemap (osm liberty) 2026-05-23 19:14:59 +02:00
vcoppe 7361b54255 only apply minify to selection 2026-05-21 20:27:22 +02:00
vcoppe 9e2334ca83 New Crowdin updates (#336)
* New translations en.json (Dutch)

* New translations view.mdx (Dutch)

* New translations en.json (Spanish)

* New translations view.mdx (Spanish)

* New translations view.mdx (Dutch)

* New translations en.json (Chinese Simplified)

* New translations view.mdx (Chinese Simplified)

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

* New translations files-and-stats.mdx (Serbian (Latin))

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

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

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

* New translations files-and-stats.mdx (Serbian (Latin))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* New translations files-and-stats.mdx (Serbian (Latin))

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

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

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

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

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

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

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

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

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

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

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

* New translations en.json (Russian)

* New translations elevation.mdx (Dutch)

[ci skip]

* New translations map-controls.mdx (Dutch)

[ci skip]

* New translations elevation.mdx (Dutch)

[ci skip]

* New translations files-and-stats.mdx (Russian)

[ci skip]

* New translations view.mdx (Russian)

[ci skip]

* New translations clean.mdx (Norwegian)

[ci skip]

* New translations clean.mdx (Norwegian)

[ci skip]

* New translations en.json (Norwegian)

[ci skip]

* New translations poi.mdx (Norwegian)

[ci skip]

* New translations en.json (Indonesian)

[ci skip]

* New translations en.json (Dutch)

[ci skip]
2026-05-21 20:20:49 +02:00
33 changed files with 166 additions and 263 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 KiB

After

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 525 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 710 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 KiB

+10 -19
View File
@@ -31,10 +31,8 @@ import bikerouterGravel from './custom/bikerouter-gravel.json';
export const maptilerKeyPlaceHolder = 'MAPTILER_KEY';
export const basemaps: { [key: string]: string | StyleSpecification } = {
maptilerStreets: `https://api.maptiler.com/maps/streets-v4/style.json?key=${maptilerKeyPlaceHolder}`,
maptilerTopo: `https://api.maptiler.com/maps/topo-v4/style.json?key=${maptilerKeyPlaceHolder}`,
maptilerOutdoors: `https://api.maptiler.com/maps/outdoor-v4/style.json?key=${maptilerKeyPlaceHolder}`,
maptilerSatellite: `https://api.maptiler.com/maps/hybrid-v4/style.json?key=${maptilerKeyPlaceHolder}`,
topo: 'https://raw.githubusercontent.com/gpxstudio/styles/refs/heads/main/topo.json',
satellite: 'https://raw.githubusercontent.com/gpxstudio/styles/refs/heads/main/satellite.json',
esriSatellite: {
version: 8,
sources: {
@@ -799,10 +797,8 @@ export type LayerTreeType = { [key: string]: LayerTreeType | boolean };
export const basemapTree: LayerTreeType = {
basemaps: {
world: {
maptilerStreets: true,
maptilerTopo: true,
maptilerOutdoors: true,
maptilerSatellite: true,
topo: true,
satellite: true,
esriSatellite: true,
openStreetMap: true,
openTopoMap: true,
@@ -936,7 +932,7 @@ export const overpassTree: LayerTreeType = {
};
// Default basemap used
export const defaultBasemap = 'maptilerStreets';
export const defaultBasemap = 'topo';
// Default overlays used (none)
export const defaultOverlays: LayerTreeType = {
@@ -1025,10 +1021,8 @@ export const defaultOverpassQueries: LayerTreeType = {
export const defaultBasemapTree: LayerTreeType = {
basemaps: {
world: {
maptilerStreets: true,
maptilerTopo: true,
maptilerOutdoors: true,
maptilerSatellite: true,
topo: true,
satellite: true,
esriSatellite: false,
openStreetMap: true,
openTopoMap: true,
@@ -1487,14 +1481,11 @@ export const overpassQueryData: Record<string, OverpassQueryData> = {
};
export const terrainSources: { [key: string]: RasterDEMSourceSpecification } = {
'maptiler-dem': {
type: 'raster-dem',
url: `https://api.maptiler.com/tiles/terrain-rgb-v2/tiles.json?key=${maptilerKeyPlaceHolder}`,
},
mapterhorn: {
type: 'raster-dem',
url: 'https://tiles.mapterhorn.com/tilejson.json',
url: 'https://tiles.gpx.studio/mapterhorn.json',
encoding: 'terrarium',
},
};
export const defaultTerrainSource = 'maptiler-dem';
export const defaultTerrainSource = 'mapterhorn';
+1 -7
View File
@@ -8,7 +8,7 @@
...others
}: {
iconOnly?: boolean;
company?: 'gpx.studio' | 'maptiler' | 'github' | 'crowdin' | 'facebook' | 'reddit';
company?: 'gpx.studio' | 'github' | 'crowdin' | 'facebook' | 'reddit';
[key: string]: any;
} = $props();
</script>
@@ -19,12 +19,6 @@
alt="Logo of gpx.studio."
{...others}
/>
{:else if company === 'maptiler'}
<img
src="{base}/maptiler-logo{mode.current === 'dark' ? '-dark' : ''}.svg"
alt="Logo of Maptiler."
{...others}
/>
{:else if company === 'github'}
<svg
role="img"
@@ -1,10 +1,10 @@
<script lang="ts">
import maptilerTopoMap from '$lib/assets/img/home/maptiler-topo.png?enhanced';
import waymarkedMap from '$lib/assets/img/home/waymarked.png?enhanced';
import topoMap from '$lib/assets/img/docs/maps/topo.png?enhanced';
import waymarkedMap from '$lib/assets/img/docs/maps/waymarked.png?enhanced';
</script>
<div class="relative h-80 aspect-square rounded-2xl shadow-xl overflow-clip">
<enhanced:img src={maptilerTopoMap} alt="MapTiler Topo map screenshot." class="absolute" />
<enhanced:img src={topoMap} alt="Topo map screenshot." class="absolute" />
<enhanced:img
src={waymarkedMap}
alt="Waymarked Trails map screenshot."
@@ -29,7 +29,7 @@ export const defaultEmbeddingOptions = {
key: '',
files: [],
ids: [],
basemap: 'maptilerStreets',
basemap: 'topo',
elevation: {
show: true,
height: 170,
@@ -125,9 +125,7 @@ export function convertOldEmbeddingOptions(options: URLSearchParams): any {
}
if (options.has('source')) {
let basemap = options.get('source')!;
if (basemap === 'satellite') {
newOptions.basemap = 'maptilerSatellite';
} else if (basemap === 'otm') {
if (basemap === 'otm') {
newOptions.basemap = 'openTopoMap';
} else if (basemap === 'ohm') {
newOptions.basemap = 'openHikingMap';
+37 -23
View File
@@ -10,7 +10,8 @@ import {
import { getLayers } from '$lib/components/map/layer-control/utils';
import { i18n } from '$lib/i18n.svelte';
const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource } = settings;
const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource, distanceUnits } =
settings;
const emptySource: maplibregl.GeoJSONSourceSpecification = {
type: 'geojson',
@@ -57,15 +58,21 @@ export class StyleManager {
opacities.subscribe(() => this.updateOverlays());
terrainSource.subscribe(() => this.updateTerrain());
customLayers.subscribe(() => this.updateBasemap());
distanceUnits.subscribe(() => {
if (get(currentBasemap) === 'topo') this.updateBasemap();
});
}
updateBasemap() {
const map_ = get(this._map);
if (!map_) return;
this.buildStyle().then((style) => map_.setStyle(style));
let basemap = get(currentBasemap);
this.buildStyle(basemap).then((style) => {
if (get(currentBasemap) === basemap) map_.setStyle(style);
});
}
async buildStyle(): Promise<maplibregl.StyleSpecification> {
async buildStyle(basemap: string): Promise<maplibregl.StyleSpecification> {
const custom = get(customLayers);
const style: maplibregl.StyleSpecification = {
@@ -79,22 +86,31 @@ export class StyleManager {
layers: [],
};
let basemap = get(currentBasemap);
const basemapInfo = basemaps[basemap] ?? custom[basemap]?.value ?? basemaps[defaultBasemap];
let basemapStyle = basemaps.openStreetMap as maplibregl.StyleSpecification;
try {
basemapStyle = await this.get(basemapInfo);
for (const source in basemapStyle.sources) {
const src = basemapStyle.sources[source];
if (
src &&
typeof src === 'object' &&
'url' in src &&
typeof src.url === 'string' &&
src.url.includes(maptilerKeyPlaceHolder)
) {
src.url = src.url.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
}
} catch (e) {
console.error(e.message);
}
this.merge(style, basemapStyle);
if (this._maptilerKey !== '') {
const terrain = this.getCurrentTerrain();
style.sources[terrain.source] = terrainSources[terrain.source];
style.terrain = terrain.exaggeration > 0 ? terrain : undefined;
}
const terrain = this.getCurrentTerrain();
style.sources[terrain.source] = terrainSources[terrain.source];
style.terrain = terrain.exaggeration > 0 ? terrain : undefined;
style.layers.push(...anchorLayers);
@@ -166,7 +182,6 @@ export class StyleManager {
}
updateTerrain() {
if (this._maptilerKey === '') return;
const map_ = get(this._map);
if (!map_) return;
@@ -189,9 +204,6 @@ export class StyleManager {
): Promise<maplibregl.StyleSpecification> {
if (typeof styleInfo === 'string') {
let styleUrl = styleInfo as string;
if (styleUrl.includes(maptilerKeyPlaceHolder)) {
styleUrl = styleUrl.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
const response = await fetch(styleUrl, { cache: 'force-cache' });
if (!response.ok) {
throw new Error(`HTTP error fetching style "${styleInfo}": ${response.status}`);
@@ -205,17 +217,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) &&
textField.length >= 2 &&
textField[0] === 'coalesce' &&
Array.isArray(textField[1]) &&
textField[1][0] === 'get' &&
typeof textField[1][1] === 'string' &&
textField[1][1].startsWith('name')
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')
) {
layer.layout['text-field'] = [
'coalesce',
@@ -236,10 +254,6 @@ export class StyleManager {
getCurrentTerrain() {
const terrain = get(terrainSource);
const source = terrainSources[terrain];
if (source.url && source.url.includes(maptilerKeyPlaceHolder)) {
source.url = source.url.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
const map_ = get(this._map);
return {
source: terrain,
@@ -163,6 +163,9 @@ export class ReducedGPXLayerCollection {
reduce() {
let itemsAndPoints = new Map<ListItem, TrackPoint[]>();
this._simplified.forEach(([item, maxPts, points], itemFullId) => {
if (!get(selection).hasAnyParent(item)) {
return;
}
itemsAndPoints.set(
item,
points
+1 -1
View File
@@ -59,7 +59,7 @@ Only one basemap can be displayed at a time.
<DocsLayers />
<span class="text-sm text-center mt-2">
Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the <a href="https://www.maptiler.com/maps/outdoor-topo/" target="_blank">MapTiler Topo</a> basemap.
Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap.
</span>
</div>
@@ -18,7 +18,7 @@ This tool allows you to add elevation data to traces and [points of interest](..
<DocsNote>
Elevation data is provided by <a href="https://maptiler.com" target="_blank">MapTiler</a>.
You can learn more about its origin and accuracy in the <a href="https://docs.maptiler.com/guides/map-tiling-hosting/data-hosting/rgb-terrain-by-maptiler/" target="_blank">documentation</a>.
Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>.
You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>.
</DocsNote>
+1 -1
View File
@@ -69,4 +69,4 @@ Ze kunnen worden ingeschakeld in het [map layer settings dialoog](./menu/setting
In deze instellingen kun je ook de transparantie van de lagen beheren.
For advanced users, it is possible to add custom basemaps and overlays by providing <a href="https://en.wikipedia.org/wiki/Web_Map_Tile_Service" target="_blank">WMTS</a>, <a href="https://en.wikipedia.org/wiki/Web_Map_Service" target="_blank">WMS</a>, or <a href="https://maplibre.org/maplibre-style-spec/" target="_blank">MapLibre style JSON</a> URLs.
Voor gevorderde gebruikers is het mogelijk om aangepaste basiskaarten en lagen toe te voegen met <a href="https://en.wikipedia.org/wiki/Web_Map_Tile_Service" target="_blank">WMTS</a>, <a href="https://en.wikipedia.org/wiki/Web_Map_Service" target="_blank">WMS</a>, of <a href="https://maplibre.org/maplibre-style-spec/" target="_blank">MapLibre-stijl JSON</a> URLs.
@@ -18,7 +18,7 @@ Met dit gereedschap kun je hoogtegegevens toevoegen aan sporen en [interessante
<DocsNote>
Elevation data is provided by <a href="https://maptiler.com" target="_blank">MapTiler</a>.
You can learn more about its origin and accuracy in the <a href="https://docs.maptiler.com/guides/map-tiling-hosting/data-hosting/rgb-terrain-by-maptiler/" target="_blank">documentation</a>.
Hoogtegegevens worden verstrekt door <a href="https://maptiler.com" target="_blank">MapTiler</a>.
Je kunt meer leren over de oorsprong en nauwkeurigheid in de <a href="https://docs.maptiler.com/guides/map-tiling-hosting/data-hosting/rgb-terrain-by-maptiler/" target="_blank">documentatie</a>.
</DocsNote>
+3 -3
View File
@@ -1,5 +1,5 @@
---
title: Clean
title: Rens
---
<script>
@@ -9,9 +9,9 @@ title: Clean
# <SquareDashedMousePointer size="24" class="inline-block" style="margin-bottom: 5px" /> { title }
When the clean tool is selected, dragging the map will create a rectangular selection.
Når rensverktøyet er valgt, markeres et område ved å tegne et rektangel på kartet.
Depending on the options selected in the dialog shown below, clicking the delete button will remove GPS points and/or [points of interest](../gpx) located either inside or outside the selection.
Avhengig av alternativene som er valgt i dialogboksen nedenfor, fjerner slett-knappen GPS-punkter og/eller [interessepunkter POI](../gpx) enten innenfor eller utenfor det merkede området.
<div class="flex flex-row justify-center">
<Clean class="text-foreground p-3 border rounded-md shadow-lg" />
+9 -9
View File
@@ -1,5 +1,5 @@
---
title: Points of interest
title: Interessepunkt
---
<script>
@@ -9,19 +9,19 @@ title: Points of interest
# <MapPin size="24" class="inline-block" style="margin-bottom: 5px" /> { title }
[Points of interest](../gpx) can be added to GPX files to mark locations of interest on the map and display them on your GPS device.
[Interessepunkt](../gpx) kan legges til GPX filer for å markere punkter av interesse for å vises på en GPS-enhet.
### Creating a point of interest
### Opprettelse av interessepunkt
To create a point of interest, fill in the form shown below.
You can choose the location of the point of interest either by clicking on the map or by entering the coordinates manually.
Validate the form when you are done.
Fyll ut skjemaet nedenfor for å opprette et interessepunkt.
Ved å klikke på kartet eller skrive inn koordinatene, kan du angi plassering til interessepunktet.
Bekreft skjemaet når du er ferdig.
<div class="flex flex-row justify-center">
<Waypoint class="text-foreground p-3 border rounded-md shadow-lg" />
</div>
### Editing a point of interest
### Redigering av interessepunkt
The form above can also be used to edit an existing point of interest after selecting it on the map.
If you only need to move the point of interest, you can drag it to the desired location.
Et eksisterende interessepunkt kan også redigeres ved å velge det på kartet og deretter bruke skjemaet over.
Interessepunktet kan flyttes ved å dra det til ønsket plassering.
+10 -10
View File
@@ -47,11 +47,11 @@ title: Файлы и статистика
Щелкнув правой кнопкой мыши на вкладке файла, вы можете получить доступ к тем же действиям, что и в [меню редактирования](./menu/edit).
### Tree layout
### Древовидное представление
As mentioned in the [view options section](./menu/view), you can switch to a tree layout for the files list.
This layout is ideal for managing a large number of open files, as it organizes them into a vertical list on the right side of the map.
In addition, the file tree view enables you to inspect the [tracks, segments, and points of interest](./gpx) contained inside the files through collapsible sections.
Как указано в разделе [Варианты отображения](./menu/view), вы можете переключаться на древовидное представление для списка файлов.
Эта раскладка идеально подходит для управления большим количеством открытых файлов, так как она упорядочивает их в вертикальный список справа от карты.
Кроме того, древовидное представление файлов позволяет вам исследовать [треки, сегменты и точки интереса](./gpx) содержащиеся в файлах через выпадающие списки.
Вы также можете применять [действия редактирования](./menu/edit) и [инструменты](./toolbar) к внутренним элементам файла.
Кроме того, вы можете перетаскивать внутренние элементы, чтобы изменить их порядок, перемещать их в иерархии или даже в другой файл.
@@ -98,12 +98,12 @@ In addition, the file tree view enables you to inspect the [tracks, segments, an
/>
</div>
### Additional data
### Дополнительная информация
Using the <kbd><ChartNoAxesColumn size="16" class="inline-block" style="margin-bottom: 2px"/></kbd> button at the bottom-right of the elevation profile, you can optionally color the elevation profile by:
С помощью кнопки <kbd><ChartNoAxesColumn size="16" class="inline-block" style="margin-bottom: 2px"/></kbd> справа от профиля высоты можно добавить цветовое выделение профиля на основе:
- **slope** information computed from the elevation data, or
- **surface** or **category** data coming from <a href="https://www.openstreetmap.org/" target="_blank">OpenStreetMap</a>'s <a href="https://wiki.openstreetmap.org/wiki/Key:surface" target="_blank">surface</a> and <a href="https://wiki.openstreetmap.org/wiki/Key:highway" target="_blank">highway</a> tags.
This is only available for files created with **gpx.studio**.
- **угла наклона** информации, вычисленной на основе данных о высоте, или
- **поверхности** или **категории** - данных, полученных из меток <a href="https://wiki.openstreetmap.org/wiki/Key:surface" target="_blank">Поверхность</a> и <a href="https://wiki.openstreetmap.org/wiki/Key:highway" target="_blank">Шоссе</a> карт <a href="https://www.openstreetmap.org/" target="_blank">OpenStreetMap</a>'s.
Данная возможность доступна только для файлов, созданных в **gpx.studio**.
If your selection includes it, you can also visualize: **speed**, **heart rate**, **cadence**, **temperature** and **power** data on the elevation profile.
Если выбрана данная опция, вы также можете добавить визуализацию данных **Скорости**, **Пульса**, **Темпа**, **Температуры** и **Мощности** на профиле высоты.
+1 -1
View File
@@ -18,7 +18,7 @@ Hide the elevation profile to make room for the map, or show it to inspect the c
### <ListTree size="16" class="inline-block" style="margin-bottom: 2px" /> File tree
Toggle the tree layout for the [file list](../files-and-stats).
This layout is ideal for managing a large number of open files, as it organizes them into a vertical list on the right side of the map.
Эта раскладка идеально подходит для управления большим количеством открытых файлов, так как она упорядочивает их в вертикальный список справа от карты.
In addition, the file tree view enables you to inspect the [tracks, segments, and points of interest](../gpx) contained inside the files through collapsible sections.
### <Map size="16" class="inline-block" style="margin-bottom: 2px" /> Switch to previous basemap
+2 -2
View File
@@ -8,12 +8,12 @@ title: GPX format datoteke
# { title }
<a href="https://www.topografix.com/gpx.asp" target="_blank">Format GPX datoteke</a> je otvoreni standard za razmenu GPS podataka između aplikacija i GPS uređaja
<a href="https://www.topografix.com/gpx.asp" target="_blank">GPX format datoteke</a> je otvoreni standard za razmenu GPS podataka između aplikacija i GPS uređaja.
U suštini se sastoji od niza GPS tačaka koje kodiraju jedan ili više GPS trekova, i, opciono, neke interesantne tačke.
GPX datoteke mogu da sadrže i metapodatke, od kojih su polja **naziv** i **opis** najkorisnija za korisnike.
### <Waypoints size="16" class="inline-block" style="margin-bottom: 2px" /> Putanje, segmenti i GPS tačke
### <Waypoints size="16" class="inline-block" style="margin-bottom: 2px" /> Praćenja, segmenti i GPS tačke
Kao što je gore pomenuto, GPX datoteka može sadržati više GPS trekova.
Oni su organizovani u hijerarhijsku strukturu, sa putanjama na najvišem nivou.
+1 -1
View File
@@ -13,7 +13,7 @@ Možete koristiti **gpx.studio** da biste kreirali mape koje prikazuju vaše GPX
Sve što vam je potrebno je:
1. GPX datoteke smeštene na vašem serveru ili na Google disku, ili dostupne preko javne URL adrese;
1. GPX datoteke smeštene na vašem serveru ili na Gugl disku, ili dostupne preko javne URL adrese;
2. _Opciono:_ <a href="https://cloud.maptiler.com/auth/widget?next=https://cloud.maptiler.com/maps/" target="_blank">MapTiler ključ</a> za učitavanje MapTiler mapa.
Zatim možete eksperimentisati sa konfiguratorom ispod da biste prilagodili svoju mapu i generisali odgovarajući HTML kod.
+2 -2
View File
@@ -210,7 +210,7 @@ type RoutingProfile =
| 'motorcycle'
| 'water'
| 'railway';
type TerrainSource = 'maptiler-dem' | 'mapterhorn';
type TerrainSource = 'mapterhorn';
type StreetViewSource = 'mapillary' | 'google';
export const settings = {
@@ -308,7 +308,7 @@ export const settings = {
terrainSource: new Setting<TerrainSource>(
'terrainSource',
defaultTerrainSource,
getValueValidator(['maptiler-dem', 'mapterhorn'], defaultTerrainSource)
getValueValidator(['mapterhorn'], defaultTerrainSource)
),
directionMarkers: new Setting('directionMarkers', false),
distanceMarkers: new Setting('distanceMarkers', false),
+8 -10
View File
@@ -7,7 +7,6 @@ import maplibregl from 'maplibre-gl';
import { pointToTile, pointToTileFraction } from '@mapbox/tilebelt';
import type { GPXStatisticsTree } from '$lib/logic/statistics-tree';
import { ListTrackSegmentItem } from '$lib/components/file-list/file-list';
import { PUBLIC_MAPTILER_KEY } from '$env/static/public';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
@@ -101,7 +100,7 @@ export function getClosestTrackSegments(
export function getElevation(
points: (TrackPoint | Waypoint | Coordinates)[],
ELEVATION_ZOOM: number = 13,
ELEVATION_ZOOM: number = 12,
tileSize = 512
): Promise<number[]> {
let coordinates = points.map((point) =>
@@ -122,10 +121,9 @@ export function getElevation(
};
let promises = uniqueTiles.map((tile) =>
fetch(
`https://api.maptiler.com/tiles/terrain-rgb-v2/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp?key=${PUBLIC_MAPTILER_KEY}`,
{ cache: 'force-cache' }
)
fetch(`https://tiles.gpx.studio/mapterhorn/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp`, {
cache: 'force-cache',
})
.then((response) => response.blob())
.then(
(blob) =>
@@ -180,10 +178,10 @@ export function getElevation(
_y + (_y + 1 == tileSize ? 0 : 1)
);
let ele00 = -10000 + (p00[0] * 256 * 256 + p00[1] * 256 + p00[2]) * 0.1;
let ele01 = -10000 + (p01[0] * 256 * 256 + p01[1] * 256 + p01[2]) * 0.1;
let ele10 = -10000 + (p10[0] * 256 * 256 + p10[1] * 256 + p10[2]) * 0.1;
let ele11 = -10000 + (p11[0] * 256 * 256 + p11[1] * 256 + p11[2]) * 0.1;
let ele00 = -32768 + p00[0] * 256 + p00[1] + p00[2] / 256;
let ele01 = -32768 + p01[0] * 256 + p01[1] + p01[2] / 256;
let ele10 = -32768 + p10[0] * 256 + p10[1] + p10[2] / 256;
let ele11 = -32768 + p11[0] * 256 + p11[1] + p11[2] / 256;
return (
ele00 * (1 - dx) * (1 - dy) +
+3 -6
View File
@@ -235,7 +235,7 @@
},
"elevation": {
"button": "Request elevation data",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help_no_selection": "Select a file item to request elevation data."
},
"waypoint": {
@@ -304,10 +304,8 @@
"switzerland": "Switzerland",
"united_kingdom": "United Kingdom",
"united_states": "United States",
"maptilerStreets": "MapTiler Streets",
"maptilerTopo": "MapTiler Topo",
"maptilerOutdoors": "MapTiler Outdoors",
"maptilerSatellite": "MapTiler Satellite",
"topo": "Topo",
"satellite": "Satellite",
"esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap",
@@ -388,7 +386,6 @@
"tram-stop": "Tram Stop",
"bus-stop": "Bus Stop",
"ferry": "Ferry",
"maptiler-dem": "MapTiler DEM",
"mapterhorn": "Mapterhorn"
}
},
+47 -47
View File
@@ -28,7 +28,7 @@
"undo": "Batalkan",
"redo": "Ulangi",
"delete": "Hapus",
"delete_all": "Delete all",
"delete_all": "Hapus Semua",
"select_all": "Pilih Semua",
"view": "Lihat",
"elevation_profile": "Profil ketinggian",
@@ -36,7 +36,7 @@
"switch_basemap": "Beralih ke peta dasar sebelumnya",
"toggle_overlays": "Beralih lapisan",
"toggle_3d": "Beralih 3D",
"fullscreen": "Full screen",
"fullscreen": "Layar Penuh",
"settings": "Pengaturan",
"distance_units": "Satuan jarak",
"metric": "Metrik",
@@ -64,7 +64,7 @@
"ctrl": "Ctrl",
"click": "Klik",
"drag": "Seret",
"right_click_drag": "Right-click drag",
"right_click_drag": "Klik kanan geser",
"metadata": {
"button": "Info...",
"name": "Nama",
@@ -82,7 +82,7 @@
"center": "Tengah",
"open_in": "Buka di",
"copy_coordinates": "Salin koordinat",
"edit_osm": "Edit in OpenStreetMap"
"edit_osm": "Ubah di OpenStreetMap"
},
"toolbar": {
"routing": {
@@ -192,8 +192,8 @@
"from": "Titik awal terlalu jauh dari jalan terdekat",
"via": "Titik via terlalu jauh dari jalan terdekat",
"to": "Titik akhir terlalu jauh dari jalan terdekat",
"distance": "The end point is too far from the start point",
"connection": "No connection found between the points",
"distance": "Titik akhir terlalu jauh dari jalan terdekat",
"connection": "Tidak ditemukan koneksi antar titik-titik tersebut",
"timeout": "Perhitungan rute memakan waktu terlalu lama, coba tambahkan titik-titik yang lebih dekat satu sama lain"
}
},
@@ -235,7 +235,7 @@
},
"elevation": {
"button": "Minta data elevasi",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help": "Meminta data elevasi akan menghapus data elevasi yang ada, jika ada, dan menggantinya dengan data dari MapTiler.",
"help_no_selection": "Pilih item file untuk meminta data elevasi."
},
"waypoint": {
@@ -277,7 +277,7 @@
"new": "Lapisan kustom baru",
"edit": "Edit lapisan kustom",
"urls": "URL",
"url_placeholder": "WMTS, WMS or MapLibre style JSON",
"url_placeholder": "WMTS, WMS, atau JSON style MapLibre",
"max_zoom": "Zoom maksimum",
"layer_type": "Tipe lapisan",
"basemap": "Peta dasar",
@@ -286,7 +286,7 @@
"update": "Perbarui lapisan"
},
"opacity": "Opasitas Overlay",
"terrain": "Terrain source",
"terrain": "Sumber medan",
"label": {
"basemaps": "Peta dasar",
"overlays": "Overlay",
@@ -363,7 +363,7 @@
"water": "Air",
"shower": "Mandi",
"shelter": "Penampungan",
"cemetery": "Cemetery",
"cemetery": "Pemakaman",
"motorized": "Mobil dan Motor",
"fuel-station": "Stasiun bahan bakar",
"parking": "Parkir",
@@ -477,55 +477,55 @@
"shelter": "Penampungan",
"shopping_center": "Pusat Perbelanjaan",
"shower": "Mandi",
"summit": "Summit",
"telephone": "Telephone",
"tunnel": "Tunnel",
"water_source": "Water Source"
"summit": "Puncak",
"telephone": "Telepon",
"tunnel": "Terowongan",
"water_source": "Sumber Air"
}
},
"homepage": {
"website": "Website",
"home": "Home",
"app": "App",
"contact": "Contact",
"website": "Situs Web",
"home": "Beranda",
"app": "Aplikasi",
"contact": "Kontak",
"reddit": "Reddit",
"facebook": "Facebook",
"github": "GitHub",
"crowdin": "Crowdin",
"email": "Email",
"contribute": "Contribute",
"supported_by": "supported by",
"features": "Features",
"route_planning": "Route planning",
"route_planning_description": "An intuitive interface to create itineraries tailored to each sport, based on OpenStreetMap data.",
"contribute": "Kontribusi",
"supported_by": "didukung oleh",
"features": "Fitur",
"route_planning": "Perencanaan rute",
"route_planning_description": "Antarmuka intuitif untuk membuat rencana perjalanan yang disesuaikan dengan setiap olahraga, berdasarkan data OpenStreetMap.",
"file_processing": "Pengolahan file lanjutan",
"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"
"file_processing_description": "Seperangkat alat untuk melakukan semua tugas pemrosesan file umum, dan yang dapat diterapkan pada banyak file sekaligus.",
"maps": "Peta global dan lokal",
"maps_description": "Koleksi besar peta dasar, lapisan peta, dan tempat menarik untuk membantu Anda merencanakan petualangan luar ruangan berikutnya, atau memvisualisasikan pencapaian terbaru Anda.",
"data_visualization": "Visualisasi data",
"data_visualization_description": "Profil ketinggian interaktif dengan statistik terperinci untuk menganalisis aktivitas yang tercatat dan tujuan di masa mendatang.",
"philosophy": "Filosofi",
"foss": "Gratis, tanpa iklan, dan open source",
"foss_description": "Situs web ini gratis untuk digunakan, tanpa iklan, dan kode sumbernya tersedia untuk umum di GitHub.",
"privacy": "Ramah privasi",
"privacy_description": "File GPX Anda tidak pernah meninggalkan browser Anda. Tidak ada pelacakan, tidak ada pengumpulan data.",
"community": "Terwujud berkat komunitas",
"community_description": "gpx.studio memiliki komunitas luar biasa yang telah menutupi biaya operasionalnya melalui donasi selama bertahun-tahun, sekaligus membentuk proyek ini melalui saran fitur, laporan bug, dan terjemahan ke dalam banyak bahasa.",
"support_button": "Dukung gpx.studio di Open Collective",
"translate_button": "Bantu menerjemahkan situs web di Crowdin"
},
"docs": {
"translate": "Improve the translation on Crowdin",
"answer_not_found": "Did not find what you were looking for?",
"ask_on_reddit": "Ask the community on Reddit",
"translate": "Perbaiki kualitas terjemahan di Crowdin",
"answer_not_found": "Tidak menemukan apa yang Anda cari?",
"ask_on_reddit": "Tanyakan kepada komunitas di Reddit",
"search": {
"search": "Search",
"clear": "Clear",
"cancel": "Cancel",
"recent": "Recent searches",
"no_recent": "No recent searches",
"save": "Save this search",
"remove": "Remove this search from history",
"search": "Cari",
"clear": "Bersihkan",
"cancel": "Batalkan",
"recent": "Pencarian terakhir",
"no_recent": "Tidak Ada Pencarian Baru",
"save": "Simpan pencarian ini",
"remove": "Hapus pencarian ini dari riwayat",
"favorites": "Favorites",
"remove_favorite": "Remove this search from favorites",
"to_select": "to select",
+1 -1
View File
@@ -401,7 +401,7 @@
"elevation_gain_loss": "Stijging en daling",
"temperature": "Temperatuur",
"speed": "Snelheid",
"pace": "Snelheid",
"pace": "Tempo",
"heartrate": "Hartslag",
"cadence": "Cadans",
"power": "Kracht",
+4 -4
View File
@@ -36,7 +36,7 @@
"switch_basemap": "Bytt til forrige basekart",
"toggle_overlays": "Vis eller skjul kartlag",
"toggle_3d": "Skru av/på 3D",
"fullscreen": "Full screen",
"fullscreen": "Fullskjerm",
"settings": "Innstillinger",
"distance_units": "Avstandsenhet",
"metric": "Metrisk",
@@ -64,7 +64,7 @@
"ctrl": "Ctrl",
"click": "Klikk",
"drag": "Dra",
"right_click_drag": "Right-click drag",
"right_click_drag": "Høyreklikk dra",
"metadata": {
"button": "Informasjon...",
"name": "Navn",
@@ -192,8 +192,8 @@
"from": "Startpunktet er for langt unna nærmeste vei",
"via": "Via-punktet er for langt fra nærmeste vei",
"to": "Sluttpunktet er for langt unna nærmeste vei",
"distance": "The end point is too far from the start point",
"connection": "No connection found between the points",
"distance": "Sluttpunktet er for langt fra startpunktet",
"connection": "Ingen forbindelse mellom punktene funnet",
"timeout": "Ruteberegning tok for lang tid, prøv å legge til flere punkter"
}
},
+11 -11
View File
@@ -28,7 +28,7 @@
"undo": "Отменить",
"redo": "Повторить",
"delete": "Удалить",
"delete_all": "Delete all",
"delete_all": "Удалить всё",
"select_all": "Выбрать все",
"view": "Вид",
"elevation_profile": "Профиль рельефа",
@@ -36,7 +36,7 @@
"switch_basemap": "Переключиться на предыдущую базовую карту",
"toggle_overlays": "Переключить слои",
"toggle_3d": "Включить 3D",
"fullscreen": "Full screen",
"fullscreen": "Полный экран",
"settings": "Настройки",
"distance_units": "Единицы измерения расстояния",
"metric": "Метрические",
@@ -64,7 +64,7 @@
"ctrl": "Ctrl",
"click": "Клик",
"drag": "Перетащить",
"right_click_drag": "Right-click drag",
"right_click_drag": "Перетаскивание правой кнопкой мыши",
"metadata": {
"button": "Информация...",
"name": "Название",
@@ -82,7 +82,7 @@
"center": "По центру",
"open_in": "Открыть в",
"copy_coordinates": "Скопировать координаты",
"edit_osm": "Edit in OpenStreetMap"
"edit_osm": "Редактировать в OpenStreetMap"
},
"toolbar": {
"routing": {
@@ -192,8 +192,8 @@
"from": "Начальная точка слишком далеко от ближайшей дороги",
"via": "Точка маршрута слишком далеко от ближайшей дороги",
"to": "Конечная точка слишком далеко от ближайшей дороги",
"distance": "The end point is too far from the start point",
"connection": "No connection found between the points",
"distance": "Конечная точка находится слишком далеко от начальной",
"connection": "Связь между точками не обнаружена",
"timeout": "Расчет маршрута занял слишком много времени, попробуйте добавить точки ближе"
}
},
@@ -235,7 +235,7 @@
},
"elevation": {
"button": "Запросить данные о высоте",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help": "Запрос данных о высотах приведет к удалению существующих данных о высотах, если таковые имеются, и замене их данными из MapTiler.",
"help_no_selection": "Выберите файл для запроса данных о высоте."
},
"waypoint": {
@@ -277,7 +277,7 @@
"new": "Новый пользовательский слой",
"edit": "Редактировать пользовательский слой",
"urls": "URL-адрес(а)",
"url_placeholder": "WMTS, WMS or MapLibre style JSON",
"url_placeholder": "WMTS, WMS или MapLibre стиль JSON",
"max_zoom": "Максимальное приближение",
"layer_type": "Тип слоя",
"basemap": "Основная карта",
@@ -286,7 +286,7 @@
"update": "Обновить слой"
},
"opacity": "Прозрачность наложения",
"terrain": "Terrain source",
"terrain": "Источник рельефа местности",
"label": {
"basemaps": "Основные карты",
"overlays": "Наложения",
@@ -333,7 +333,7 @@
"usgs": "USGS",
"bikerouterGravel": "bikerouter.de Gravel",
"cyclOSMlite": "CyclOSM Lite",
"mapterhornHillshade": "Mapterhorn Hillshade",
"mapterhornHillshade": "Mapterhorn тень холма",
"openRailwayMap": "OpenRailwayMap",
"swisstopoSlope": "swisstopo Slope",
"swisstopoHiking": "swisstopo Hiking",
@@ -363,7 +363,7 @@
"water": "Вода",
"shower": "Душ",
"shelter": "Укрытие",
"cemetery": "Cemetery",
"cemetery": "Кладбище",
"motorized": "Автомобили и мотоциклы",
"fuel-station": "Заправочная станция",
"parking": "Парковка",
@@ -19,8 +19,8 @@
return;
}
embeddingOptions = getMergedEmbeddingOptions(options);
if (embeddingOptions.key === '' && embeddingOptions.basemap.startsWith('maptiler')) {
embeddingOptions.basemap = 'openStreetMap';
if (embeddingOptions.key === '' && embeddingOptions.basemap === 'satellite') {
embeddingOptions.basemap = 'topo';
}
});
</script>
-47
View File
@@ -1,47 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Vrstva_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 812 212" style="enable-background:new 0 0 812 212;" xml:space="preserve">
<style type="text/css">
.st0{fill:#3A1888;}
.st1{fill:#03A1C4;}
.st2{fill:#05D0DF;}
.st3{fill:#761FE8;}
.st4{fill:#FFAA01;}
.st5{fill:#F1175D;}
.st6{fill:#FB3A1B;}
.st7{fill:#FBC935;}
.st8{fill:#FFFFFF;}
</style>
<g>
<path class="st0" d="M94.3,164.2c9.2,9.2,33.8,34.3,33.8,34.3c-0.1,0.2,24.4-24.5,34.2-34.2l-34.1-34.1L94.3,164.2z"/>
<path class="st1" d="M128.3,130.2l34.1,34.1c0.1-0.1,0.1-0.1,0.2-0.2l34-34L162.5,96L128.3,130.2z"/>
<path class="st2" d="M196.6,130.1L196.6,130.1c18.9-18.9,18.9-49.4,0.1-68.3L162.5,96L196.6,130.1z"/>
<path class="st3" d="M94.1,96l-34,34c0,0,0,0,0,0l34.1,34.1c0,0,0,0,0.1,0.1l34-34L94.1,96z"/>
<path class="st4" d="M128.3,61.8L162.5,96l34.2-34.2c0,0,0,0-0.1-0.1l-34.1-34.1c0,0,0,0,0,0L128.3,61.8z"/>
<path class="st5" d="M60,61.9c-18.7,18.9-18.6,49.3,0.1,68.1l34-34L60,61.9z"/>
<path class="st6" d="M128.3,61.8L94.2,27.7l-34,34c-0.1,0.1-0.1,0.1-0.2,0.2L94.1,96L128.3,61.8z"/>
<path class="st7" d="M162.5,27.6c-18.9-18.8-49.4-18.8-68.2,0l-0.1,0.1l34.1,34.1L162.5,27.6z"/>
</g>
<path class="st8" d="M303.8,138.6v-34.9c0-8.6-4.5-16.4-13.3-16.4c-8.7,0-13.9,7.8-13.9,16.4v34.9h-16.1V73.4h14.9l1.2,7.9
c3.4-6.6,11-9,17.2-9c7.8,0,15.6,3.2,19.3,12.2c5.8-9.2,13.3-11.9,21.8-11.9c18.5,0,27.6,11.4,27.6,30.9v35.1h-16.1v-35.1
c0-8.6-3.6-15.9-12.3-15.9c-8.7,0-14.1,7.5-14.1,16.1v34.9H303.8z"/>
<path class="st8" d="M430.5,73.5h15.5v65.1h-15.2l-0.8-9.5c-3.7,7.7-13.9,11.4-21.1,11.5c-19.3,0.1-33.6-11.8-33.6-34.6
c0-22.5,14.9-34.2,34-34.1c8.7,0,17,4.1,20.7,10.6L430.5,73.5z M391.4,106c0,12.4,8.6,19.8,19.3,19.8c25.4,0,25.4-39.5,0-39.5
C399.9,86.3,391.4,93.6,391.4,106z"/>
<path class="st8" d="M459.5,165.8V73.5h15.1l1.1,9c5-7.3,13.7-10.4,21.1-10.4c20.1,0,33.4,14.9,33.4,34.1c0,19-12,34.1-32.9,34.1
c-6.9,0-17-2.1-21.7-9.3v34.9H459.5z M514.1,106.1c0-10.2-6.9-18.5-18.5-18.5c-11.6,0-18.5,8.3-18.5,18.5c0,10.2,7.5,18.5,18.5,18.5
C506.6,124.6,514.1,116.3,514.1,106.1z"/>
<path class="st8" d="M559,53.7v19.7h22.2v5.4H559v39.8c0,8.8,1.9,15.1,12,15.1c3.2,0,6.7-1.1,10-2.6l2.2,5.3
c-4.1,2-8.2,3.3-12.3,3.3c-13.9,0-18.4-8.2-18.4-21V78.8h-13.9v-5.4h13.9v-19L559,53.7z"/>
<path class="st8" d="M604.7,52.1c0,6.9-10.4,6.9-10.4,0C594.3,45.2,604.7,45.2,604.7,52.1z M596.1,73.1v65.5h6.5V73.1H596.1z"/>
<path class="st8" d="M627.6,46.2v92.5h-6.5V46.2H627.6z"/>
<path class="st8" d="M730.2,73.4l0.3,11.6c4.1-8.9,13.3-12.3,21.7-12.3c4.9-0.1,9.6,1.2,14,3.8l-2.9,5.3c-3.4-2.1-7.3-3-11.1-3
c-12.2,0.1-21.5,9.9-21.5,21.8v38h-6.5V73.4H730.2z"/>
<g>
<path class="st8" d="M675.1,134.7c-11.5,0-21.4-7.2-25.5-17.4l0,0l0,0c0,0,0,0,0,0l52.8-14c0,0,0,0,0,0.1l5.6-1.5
c-2.3-16.5-16.2-29.3-33-29.3c-18.4,0-33.3,15.2-33.3,34c0,18.8,14.9,34,33.3,34c13.8,0,25.6-8.5,30.6-20.7l-5.3-2.3
C696.2,127.6,686.4,134.7,675.1,134.7z M647.5,106.6c0-15.5,12.3-28.1,27.5-28.1c11.9,0,22,7.7,25.9,18.5L647.9,111
C647.6,109.5,647.5,108.1,647.5,106.6z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

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

Before

Width:  |  Height:  |  Size: 3.1 KiB