101 Commits

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

Before

Width:  |  Height:  |  Size: 313 KiB

After

Width:  |  Height:  |  Size: 339 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 729 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 KiB

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 KiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

+19 -16
View File
@@ -31,10 +31,10 @@ import bikerouterGravel from './custom/bikerouter-gravel.json';
export const maptilerKeyPlaceHolder = 'MAPTILER_KEY'; export const maptilerKeyPlaceHolder = 'MAPTILER_KEY';
export const basemaps: { [key: string]: string | StyleSpecification } = { export const basemaps: { [key: string]: string | StyleSpecification } = {
libertyTopo: 'https://styles.gpx.studio/liberty-topo.json', maptilerStreets: `https://api.maptiler.com/maps/streets-v4/style.json?key=${maptilerKeyPlaceHolder}`,
libertySatellite: 'https://styles.gpx.studio/liberty-satellite.json', maptilerTopo: `https://api.maptiler.com/maps/topo-v4/style.json?key=${maptilerKeyPlaceHolder}`,
osm: 'https://styles.gpx.studio/osm.json', maptilerOutdoors: `https://api.maptiler.com/maps/outdoor-v4/style.json?key=${maptilerKeyPlaceHolder}`,
osmTopo: 'https://styles.gpx.studio/osm-topo.json', maptilerSatellite: `https://api.maptiler.com/maps/hybrid-v4/style.json?key=${maptilerKeyPlaceHolder}`,
esriSatellite: { esriSatellite: {
version: 8, version: 8,
sources: { sources: {
@@ -799,10 +799,10 @@ export type LayerTreeType = { [key: string]: LayerTreeType | boolean };
export const basemapTree: LayerTreeType = { export const basemapTree: LayerTreeType = {
basemaps: { basemaps: {
world: { world: {
libertyTopo: true, maptilerStreets: true,
libertySatellite: true, maptilerTopo: true,
osm: true, maptilerOutdoors: true,
osmTopo: true, maptilerSatellite: true,
esriSatellite: true, esriSatellite: true,
openStreetMap: true, openStreetMap: true,
openTopoMap: true, openTopoMap: true,
@@ -936,7 +936,7 @@ export const overpassTree: LayerTreeType = {
}; };
// Default basemap used // Default basemap used
export const defaultBasemap = 'libertyTopo'; export const defaultBasemap = 'maptilerStreets';
// Default overlays used (none) // Default overlays used (none)
export const defaultOverlays: LayerTreeType = { export const defaultOverlays: LayerTreeType = {
@@ -1025,10 +1025,10 @@ export const defaultOverpassQueries: LayerTreeType = {
export const defaultBasemapTree: LayerTreeType = { export const defaultBasemapTree: LayerTreeType = {
basemaps: { basemaps: {
world: { world: {
libertyTopo: true, maptilerStreets: true,
libertySatellite: true, maptilerTopo: true,
osm: true, maptilerOutdoors: true,
osmTopo: true, maptilerSatellite: true,
esriSatellite: false, esriSatellite: false,
openStreetMap: true, openStreetMap: true,
openTopoMap: true, openTopoMap: true,
@@ -1487,11 +1487,14 @@ export const overpassQueryData: Record<string, OverpassQueryData> = {
}; };
export const terrainSources: { [key: string]: RasterDEMSourceSpecification } = { export const terrainSources: { [key: string]: RasterDEMSourceSpecification } = {
'maptiler-dem': {
type: 'raster-dem',
url: `https://api.maptiler.com/tiles/terrain-rgb-v2/tiles.json?key=${maptilerKeyPlaceHolder}`,
},
mapterhorn: { mapterhorn: {
type: 'raster-dem', type: 'raster-dem',
url: 'https://tiles.gpx.studio/mapterhorn.json', url: 'https://tiles.mapterhorn.com/tilejson.json',
encoding: 'terrarium',
}, },
}; };
export const defaultTerrainSource = 'mapterhorn'; export const defaultTerrainSource = 'maptiler-dem';
+7 -1
View File
@@ -8,7 +8,7 @@
...others ...others
}: { }: {
iconOnly?: boolean; iconOnly?: boolean;
company?: 'gpx.studio' | 'github' | 'crowdin' | 'facebook' | 'reddit'; company?: 'gpx.studio' | 'maptiler' | 'github' | 'crowdin' | 'facebook' | 'reddit';
[key: string]: any; [key: string]: any;
} = $props(); } = $props();
</script> </script>
@@ -19,6 +19,12 @@
alt="Logo of gpx.studio." alt="Logo of gpx.studio."
{...others} {...others}
/> />
{:else if company === 'maptiler'}
<img
src="{base}/maptiler-logo{mode.current === 'dark' ? '-dark' : ''}.svg"
alt="Logo of Maptiler."
{...others}
/>
{:else if company === 'github'} {:else if company === 'github'}
<svg <svg
role="img" role="img"
@@ -1,10 +1,10 @@
<script lang="ts"> <script lang="ts">
import topoMap from '$lib/assets/img/docs/maps/topo.png?enhanced'; import maptilerTopoMap from '$lib/assets/img/home/maptiler-topo.png?enhanced';
import waymarkedMap from '$lib/assets/img/docs/maps/waymarked.png?enhanced'; import waymarkedMap from '$lib/assets/img/home/waymarked.png?enhanced';
</script> </script>
<div class="relative h-80 aspect-square rounded-2xl shadow-xl overflow-clip"> <div class="relative h-80 aspect-square rounded-2xl shadow-xl overflow-clip">
<enhanced:img src={topoMap} alt="Topo map screenshot." class="absolute" /> <enhanced:img src={maptilerTopoMap} alt="MapTiler Topo map screenshot." class="absolute" />
<enhanced:img <enhanced:img
src={waymarkedMap} src={waymarkedMap}
alt="Waymarked Trails map screenshot." alt="Waymarked Trails map screenshot."
@@ -45,6 +45,26 @@
settings.initialize(); settings.initialize();
function applyOptions() { function applyOptions() {
let downloads: Promise<GPXFile | null>[] = getFilesFromEmbeddingOptions(options).map(
(url) => {
return fetch(url)
.then((response) => response.blob())
.then((blob) => new File([blob], url.split('/').pop() ?? url))
.then(loadFile);
}
);
Promise.all(downloads).then((answers) => {
const files = answers.filter((file) => file !== null) as GPXFile[];
let ids: string[] = [];
files.forEach((file, index) => {
let id = `gpx-${index}-embed`;
file._data.id = id;
ids.push(id);
});
fileStateCollection.setEmbeddedFiles(files);
$fileOrder = ids;
selection.selectAll();
});
if (allowedEmbeddingBasemaps.includes(options.basemap)) { if (allowedEmbeddingBasemaps.includes(options.basemap)) {
$currentBasemap = options.basemap; $currentBasemap = options.basemap;
} }
@@ -70,27 +90,6 @@
].filter((dataset) => dataset !== null) ].filter((dataset) => dataset !== null)
); );
elevationFill.set(options.elevation.fill == 'none' ? undefined : options.elevation.fill); elevationFill.set(options.elevation.fill == 'none' ? undefined : options.elevation.fill);
let downloads: Promise<GPXFile | null>[] = getFilesFromEmbeddingOptions(options).map(
(url) => {
return fetch(url)
.then((response) => response.blob())
.then((blob) => new File([blob], url.split('/').pop() ?? url))
.then(loadFile);
}
);
Promise.all(downloads).then((answers) => {
const files = answers.filter((file) => file !== null) as GPXFile[];
let ids: string[] = [];
files.forEach((file, index) => {
let id = `gpx-${index}-embed`;
file._data.id = id;
ids.push(id);
});
fileStateCollection.setEmbeddedFiles(files);
$fileOrder = ids;
selection.selectAll();
});
} }
$effect(() => { $effect(() => {
@@ -29,7 +29,7 @@ export const defaultEmbeddingOptions = {
key: '', key: '',
files: [], files: [],
ids: [], ids: [],
basemap: 'libertyTopo', basemap: 'maptilerStreets',
elevation: { elevation: {
show: true, show: true,
height: 170, height: 170,
@@ -126,7 +126,7 @@ export function convertOldEmbeddingOptions(options: URLSearchParams): any {
if (options.has('source')) { if (options.has('source')) {
let basemap = options.get('source')!; let basemap = options.get('source')!;
if (basemap === 'satellite') { if (basemap === 'satellite') {
newOptions.basemap = 'libertySatellite'; newOptions.basemap = 'maptilerSatellite';
} else if (basemap === 'otm') { } else if (basemap === 'otm') {
newOptions.basemap = 'openTopoMap'; newOptions.basemap = 'openTopoMap';
} else if (basemap === 'ohm') { } else if (basemap === 'ohm') {
@@ -74,7 +74,7 @@ export class DistanceMarkers {
layout: { layout: {
'text-field': ['get', 'distance'], 'text-field': ['get', 'distance'],
'text-size': 14, 'text-size': 14,
'text-font': ['Noto Sans Bold'], 'text-font': ['Open Sans Bold'],
}, },
paint: { paint: {
'text-color': 'black', 'text-color': 'black',
@@ -251,11 +251,11 @@ export class GPXLayer {
source: this.fileId, source: this.fileId,
layout: { layout: {
'text-field': '»', 'text-field': '»',
'text-offset': [0, -0.1], 'text-offset': [0, -0.06],
'text-keep-upright': false, 'text-keep-upright': false,
'text-max-angle': 361, 'text-max-angle': 361,
'text-allow-overlap': true, 'text-allow-overlap': true,
'text-font': ['Noto Sans Bold'], 'text-font': ['Open Sans Bold'],
'symbol-placement': 'line', 'symbol-placement': 'line',
'symbol-spacing': 20, 'symbol-spacing': 20,
}, },
@@ -88,14 +88,6 @@
<span class="font-mono">{key}</span> <span class="font-mono">{key}</span>
{#if key === 'website' || key.startsWith('website:') || key.endsWith(':website') || key === 'contact:facebook' || key === 'contact:instagram' || key === 'contact:twitter'} {#if key === 'website' || key.startsWith('website:') || key.endsWith(':website') || key === 'contact:facebook' || key === 'contact:instagram' || key === 'contact:twitter'}
<a href={value} target="_blank" class="text-link underline">{value}</a> <a href={value} target="_blank" class="text-link underline">{value}</a>
{:else if key === 'wikipedia' || key.startsWith('wikipedia:') || key.endsWith(':wikipedia')}
<a
href="https://wikipedia.org/wiki/{value}"
target="_blank"
class="text-link underline"
>
{value}
</a>
{:else if key === 'phone' || key === 'contact:phone'} {:else if key === 'phone' || key === 'contact:phone'}
<a href={'tel:' + value} class="text-link underline">{value}</a> <a href={'tel:' + value} class="text-link underline">{value}</a>
{:else if key === 'email' || key === 'contact:email'} {:else if key === 'email' || key === 'contact:email'}
@@ -24,7 +24,7 @@ liveQuery(() => db.overpassdata.toArray()).subscribe((pois) => {
}); });
export class OverpassLayer { export class OverpassLayer {
overpassUrl = 'https://overpass.gpx.studio/api/interpreter'; overpassUrl = 'https://overpass.private.coffee/api/interpreter';
minZoom = 12; minZoom = 12;
queryZoom = 12; queryZoom = 12;
expirationTime = 7 * 24 * 3600 * 1000; expirationTime = 7 * 24 * 3600 * 1000;
+31 -65
View File
@@ -10,8 +10,7 @@ import {
import { getLayers } from '$lib/components/map/layer-control/utils'; import { getLayers } from '$lib/components/map/layer-control/utils';
import { i18n } from '$lib/i18n.svelte'; import { i18n } from '$lib/i18n.svelte';
const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource, distanceUnits } = const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource } = settings;
settings;
const emptySource: maplibregl.GeoJSONSourceSpecification = { const emptySource: maplibregl.GeoJSONSourceSpecification = {
type: 'geojson', type: 'geojson',
@@ -58,24 +57,15 @@ export class StyleManager {
opacities.subscribe(() => this.updateOverlays()); opacities.subscribe(() => this.updateOverlays());
terrainSource.subscribe(() => this.updateTerrain()); terrainSource.subscribe(() => this.updateTerrain());
customLayers.subscribe(() => this.updateBasemap()); customLayers.subscribe(() => this.updateBasemap());
distanceUnits.subscribe(() => {
const map = get(this._map);
if (map && (map.getLayer('contours_m') || map.getLayer('contours_ft'))) {
this.updateBasemap();
}
});
} }
updateBasemap() { updateBasemap() {
const map_ = get(this._map); const map_ = get(this._map);
if (!map_) return; if (!map_) return;
let basemap = get(currentBasemap); this.buildStyle().then((style) => map_.setStyle(style));
this.buildStyle(basemap).then((style) => {
if (get(currentBasemap) === basemap) map_.setStyle(style);
});
} }
async buildStyle(basemap: string): Promise<maplibregl.StyleSpecification> { async buildStyle(): Promise<maplibregl.StyleSpecification> {
const custom = get(customLayers); const custom = get(customLayers);
const style: maplibregl.StyleSpecification = { const style: maplibregl.StyleSpecification = {
@@ -89,31 +79,22 @@ export class StyleManager {
layers: [], layers: [],
}; };
let basemap = get(currentBasemap);
const basemapInfo = basemaps[basemap] ?? custom[basemap]?.value ?? basemaps[defaultBasemap]; const basemapInfo = basemaps[basemap] ?? custom[basemap]?.value ?? basemaps[defaultBasemap];
let basemapStyle = basemaps.openStreetMap as maplibregl.StyleSpecification; let basemapStyle = basemaps.openStreetMap as maplibregl.StyleSpecification;
try { try {
basemapStyle = await this.get(basemapInfo); basemapStyle = await this.get(basemapInfo);
for (const source in basemapStyle.sources) {
const src = basemapStyle.sources[source];
if (
src &&
typeof src === 'object' &&
'url' in src &&
typeof src.url === 'string' &&
src.url.includes(maptilerKeyPlaceHolder)
) {
src.url = src.url.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
}
} catch (e) { } catch (e) {
console.error(e.message); console.error(e.message);
} }
this.merge(style, basemapStyle); this.merge(style, basemapStyle);
const terrain = this.getCurrentTerrain(); if (this._maptilerKey !== '') {
style.sources[terrain.source] = terrainSources[terrain.source]; const terrain = this.getCurrentTerrain();
style.terrain = terrain.exaggeration > 0 ? terrain : undefined; style.sources[terrain.source] = terrainSources[terrain.source];
style.terrain = terrain.exaggeration > 0 ? terrain : undefined;
}
style.layers.push(...anchorLayers); style.layers.push(...anchorLayers);
@@ -185,6 +166,7 @@ export class StyleManager {
} }
updateTerrain() { updateTerrain() {
if (this._maptilerKey === '') return;
const map_ = get(this._map); const map_ = get(this._map);
if (!map_) return; if (!map_) return;
@@ -207,6 +189,9 @@ export class StyleManager {
): Promise<maplibregl.StyleSpecification> { ): Promise<maplibregl.StyleSpecification> {
if (typeof styleInfo === 'string') { if (typeof styleInfo === 'string') {
let styleUrl = styleInfo as string; let styleUrl = styleInfo as string;
if (styleUrl.includes(maptilerKeyPlaceHolder)) {
styleUrl = styleUrl.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
const response = await fetch(styleUrl, { cache: 'force-cache' }); const response = await fetch(styleUrl, { cache: 'force-cache' });
if (!response.ok) { if (!response.ok) {
throw new Error(`HTTP error fetching style "${styleInfo}": ${response.status}`); throw new Error(`HTTP error fetching style "${styleInfo}": ${response.status}`);
@@ -220,46 +205,23 @@ export class StyleManager {
merge(style: maplibregl.StyleSpecification, other: maplibregl.StyleSpecification) { merge(style: maplibregl.StyleSpecification, other: maplibregl.StyleSpecification) {
style.sources = { ...style.sources, ...other.sources }; style.sources = { ...style.sources, ...other.sources };
const units = get(distanceUnits);
for (let layer of other.layers ?? []) { for (let layer of other.layers ?? []) {
if ('source' in layer) {
if (layer.source == 'contours_m' && units === 'imperial') continue;
if (layer.source == 'contours_ft' && units !== 'imperial') continue;
}
if (layer.type === 'symbol' && layer.layout && layer.layout['text-field']) { if (layer.type === 'symbol' && layer.layout && layer.layout['text-field']) {
const textField = layer.layout['text-field']; const textField = layer.layout['text-field'];
if (Array.isArray(textField)) { if (
if ( Array.isArray(textField) &&
textField.length == 4 && textField.length >= 2 &&
Array.isArray(textField[3]) && textField[0] === 'coalesce' &&
textField[3][0] === 'coalesce' && Array.isArray(textField[1]) &&
Array.isArray(textField[3][1]) && textField[1][0] === 'get' &&
textField[3][1][0] === 'get' && typeof textField[1][1] === 'string' &&
typeof textField[3][1][1] === 'string' && textField[1][1].startsWith('name')
textField[3][1][1].startsWith('name') ) {
) { layer.layout['text-field'] = [
// OpenFreeMap styles 'coalesce',
layer.layout['text-field'] = [ ['get', `name:${i18n.lang}`],
'coalesce', ['get', 'name'],
['get', `name:${i18n.lang}`], ];
['get', 'name'],
];
}
if (
textField.length == 3 &&
textField[0] === 'coalesce' &&
Array.isArray(textField[1]) &&
textField[1][0] === 'get' &&
typeof textField[1][1] === 'string' &&
textField[1][1].startsWith('name')
) {
// OpenMapTiles styles
layer.layout['text-field'] = [
'coalesce',
['get', `name:${i18n.lang}`],
['get', 'name'],
];
}
} }
} }
style.layers.push(layer); style.layers.push(layer);
@@ -274,6 +236,10 @@ export class StyleManager {
getCurrentTerrain() { getCurrentTerrain() {
const terrain = get(terrainSource); const terrain = get(terrainSource);
const source = terrainSources[terrain];
if (source.url && source.url.includes(maptilerKeyPlaceHolder)) {
source.url = source.url.replace(maptilerKeyPlaceHolder, this._maptilerKey);
}
const map_ = get(this._map); const map_ = get(this._map);
return { return {
source: terrain, source: terrain,
+1 -1
View File
@@ -59,7 +59,7 @@ Only one basemap can be displayed at a time.
<DocsLayers /> <DocsLayers />
<span class="text-sm text-center mt-2"> <span class="text-sm text-center mt-2">
Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap. Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the <a href="https://www.maptiler.com/maps/outdoor-topo/" target="_blank">MapTiler Topo</a> basemap.
</span> </span>
</div> </div>
@@ -18,7 +18,7 @@ This tool allows you to add elevation data to traces and [points of interest](..
<DocsNote> <DocsNote>
Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>. Elevation data is provided by <a href="https://maptiler.com" target="_blank">MapTiler</a>.
You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>. You can learn more about its origin and accuracy in the <a href="https://docs.maptiler.com/guides/map-tiling-hosting/data-hosting/rgb-terrain-by-maptiler/" target="_blank">documentation</a>.
</DocsNote> </DocsNote>
+1 -1
View File
@@ -59,7 +59,7 @@ Met de kaartlagen knop kun je wisselen tussen verschillende basiskaarten, en kaa
<DocsLayers /> <DocsLayers />
<span class="text-sm text-center mt-2"> <span class="text-sm text-center mt-2">
Beweeg over de kaart om de <a href="https://hiking.waymarkedtrails.org" target="_blank">Gemarkeerde sporen wandelen</a> overlay te tonen bovenop de topografische basiskaart. Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap.
</span> </span>
</div> </div>
@@ -18,7 +18,7 @@ Met dit gereedschap kun je hoogtegegevens toevoegen aan sporen en [interessante
<DocsNote> <DocsNote>
Hoogtegegevens worden verstrekt door <a href="https://maptiler.com" target="_blank">Mapterhorn</a>. Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>.
Je kunt meer leren over de oorsprong en nauwkeurigheid in de <a href="https://mapterhorn.com/attribution/" target="_blank">documentatie</a>. You can learn more about its origin and accuracy in the <a href="https://mapterhorn.com/attribution/" target="_blank">documentation</a>.
</DocsNote> </DocsNote>
+1 -1
View File
@@ -75,7 +75,7 @@ export class BoundsManager {
this._unsubscribes.push( this._unsubscribes.push(
map.subscribe((map_) => { map.subscribe((map_) => {
if (!map_) return; if (!map_) return;
map_.fitBounds(this._bounds, { padding: 80, linear: true, animate: false }); map_.fitBounds(this._bounds, { padding: 80, linear: true, easing: () => 1 });
this.reset(); this.reset();
}) })
); );
+2 -2
View File
@@ -210,7 +210,7 @@ type RoutingProfile =
| 'motorcycle' | 'motorcycle'
| 'water' | 'water'
| 'railway'; | 'railway';
type TerrainSource = 'mapterhorn'; type TerrainSource = 'maptiler-dem' | 'mapterhorn';
type StreetViewSource = 'mapillary' | 'google'; type StreetViewSource = 'mapillary' | 'google';
export const settings = { export const settings = {
@@ -308,7 +308,7 @@ export const settings = {
terrainSource: new Setting<TerrainSource>( terrainSource: new Setting<TerrainSource>(
'terrainSource', 'terrainSource',
defaultTerrainSource, defaultTerrainSource,
getValueValidator(['mapterhorn'], defaultTerrainSource) getValueValidator(['maptiler-dem', 'mapterhorn'], defaultTerrainSource)
), ),
directionMarkers: new Setting('directionMarkers', false), directionMarkers: new Setting('directionMarkers', false),
distanceMarkers: new Setting('distanceMarkers', false), distanceMarkers: new Setting('distanceMarkers', false),
+10 -8
View File
@@ -7,6 +7,7 @@ import maplibregl from 'maplibre-gl';
import { pointToTile, pointToTileFraction } from '@mapbox/tilebelt'; import { pointToTile, pointToTileFraction } from '@mapbox/tilebelt';
import type { GPXStatisticsTree } from '$lib/logic/statistics-tree'; import type { GPXStatisticsTree } from '$lib/logic/statistics-tree';
import { ListTrackSegmentItem } from '$lib/components/file-list/file-list'; import { ListTrackSegmentItem } from '$lib/components/file-list/file-list';
import { PUBLIC_MAPTILER_KEY } from '$env/static/public';
export function cn(...inputs: ClassValue[]) { export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs)); return twMerge(clsx(inputs));
@@ -100,7 +101,7 @@ export function getClosestTrackSegments(
export function getElevation( export function getElevation(
points: (TrackPoint | Waypoint | Coordinates)[], points: (TrackPoint | Waypoint | Coordinates)[],
ELEVATION_ZOOM: number = 12, ELEVATION_ZOOM: number = 13,
tileSize = 512 tileSize = 512
): Promise<number[]> { ): Promise<number[]> {
let coordinates = points.map((point) => let coordinates = points.map((point) =>
@@ -121,9 +122,10 @@ export function getElevation(
}; };
let promises = uniqueTiles.map((tile) => let promises = uniqueTiles.map((tile) =>
fetch(`https://tiles.gpx.studio/mapterhorn/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp`, { fetch(
cache: 'force-cache', `https://api.maptiler.com/tiles/terrain-rgb-v2/${ELEVATION_ZOOM}/${tile[0]}/${tile[1]}.webp?key=${PUBLIC_MAPTILER_KEY}`,
}) { cache: 'force-cache' }
)
.then((response) => response.blob()) .then((response) => response.blob())
.then( .then(
(blob) => (blob) =>
@@ -178,10 +180,10 @@ export function getElevation(
_y + (_y + 1 == tileSize ? 0 : 1) _y + (_y + 1 == tileSize ? 0 : 1)
); );
let ele00 = -32768 + p00[0] * 256 + p00[1] + p00[2] / 256; let ele00 = -10000 + (p00[0] * 256 * 256 + p00[1] * 256 + p00[2]) * 0.1;
let ele01 = -32768 + p01[0] * 256 + p01[1] + p01[2] / 256; let ele01 = -10000 + (p01[0] * 256 * 256 + p01[1] * 256 + p01[2]) * 0.1;
let ele10 = -32768 + p10[0] * 256 + p10[1] + p10[2] / 256; let ele10 = -10000 + (p10[0] * 256 * 256 + p10[1] * 256 + p10[2]) * 0.1;
let ele11 = -32768 + p11[0] * 256 + p11[1] + p11[2] / 256; let ele11 = -10000 + (p11[0] * 256 * 256 + p11[1] * 256 + p11[2]) * 0.1;
return ( return (
ele00 * (1 - dx) * (1 - dy) + ele00 * (1 - dx) * (1 - dy) +
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suïssa", "switzerland": "Suïssa",
"united_kingdom": "Regne Unit", "united_kingdom": "Regne Unit",
"united_states": "Estats Units", "united_states": "Estats Units",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Švýcarsko", "switzerland": "Švýcarsko",
"united_kingdom": "Velká Británie", "united_kingdom": "Velká Británie",
"united_states": "Spojené státy", "united_states": "Spojené státy",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Schweiz", "switzerland": "Schweiz",
"united_kingdom": "Großbritannien", "united_kingdom": "Großbritannien",
"united_states": "USA", "united_states": "USA",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+6 -5
View File
@@ -235,7 +235,7 @@
}, },
"elevation": { "elevation": {
"button": "Request elevation data", "button": "Request elevation data",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.", "help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from MapTiler.",
"help_no_selection": "Select a file item to request elevation data." "help_no_selection": "Select a file item to request elevation data."
}, },
"waypoint": { "waypoint": {
@@ -304,10 +304,10 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "maptilerStreets": "MapTiler Streets",
"libertySatellite": "Liberty Satellite", "maptilerTopo": "MapTiler Topo",
"osm": "OpenMapTiles OSM", "maptilerOutdoors": "MapTiler Outdoors",
"osmTopo": "OpenMapTiles OSM Topo", "maptilerSatellite": "MapTiler Satellite",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
@@ -388,6 +388,7 @@
"tram-stop": "Tram Stop", "tram-stop": "Tram Stop",
"bus-stop": "Bus Stop", "bus-stop": "Bus Stop",
"ferry": "Ferry", "ferry": "Ferry",
"maptiler-dem": "MapTiler DEM",
"mapterhorn": "Mapterhorn" "mapterhorn": "Mapterhorn"
} }
}, },
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suiza", "switzerland": "Suiza",
"united_kingdom": "Reino Unido", "united_kingdom": "Reino Unido",
"united_states": "Estados Unidos", "united_states": "Estados Unidos",
"libertyTopo": "Liberty Topo", "topo": "Topográfico",
"libertySatellite": "Liberty Satellite", "satellite": "Satélite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suitza", "switzerland": "Suitza",
"united_kingdom": "Erresuma Batua", "united_kingdom": "Erresuma Batua",
"united_states": "Ameriketako Estatu Batuak", "united_states": "Ameriketako Estatu Batuak",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Sveitsi", "switzerland": "Sveitsi",
"united_kingdom": "Iso-Britannia", "united_kingdom": "Iso-Britannia",
"united_states": "Yhdysvallat", "united_states": "Yhdysvallat",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suisse", "switzerland": "Suisse",
"united_kingdom": "Royaume-Uni", "united_kingdom": "Royaume-Uni",
"united_states": "États-Unis", "united_states": "États-Unis",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Svájc", "switzerland": "Svájc",
"united_kingdom": "Anglia", "united_kingdom": "Anglia",
"united_states": "Amerika", "united_states": "Amerika",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Swiss", "switzerland": "Swiss",
"united_kingdom": "Britania Raya", "united_kingdom": "Britania Raya",
"united_states": "Amerika Serikat", "united_states": "Amerika Serikat",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Svizzera", "switzerland": "Svizzera",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "Stati Uniti", "united_states": "Stati Uniti",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "스위스", "switzerland": "스위스",
"united_kingdom": "영국", "united_kingdom": "영국",
"united_states": "미국", "united_states": "미국",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "오픈스트리트맵", "openStreetMap": "오픈스트리트맵",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Šveicarija", "switzerland": "Šveicarija",
"united_kingdom": "Jungtinė Karalystė", "united_kingdom": "Jungtinė Karalystė",
"united_states": "Jungtinės Amerikos Valstijos", "united_states": "Jungtinės Amerikos Valstijos",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+3 -5
View File
@@ -235,7 +235,7 @@
}, },
"elevation": { "elevation": {
"button": "Hoogtegegevens opvragen", "button": "Hoogtegegevens opvragen",
"help": "Het opvragen van hoogtegegevens verwijdert de bestaande hoogtegegevens, indien aanwezig, en vervangt deze door gegevens van Mapterhorn.", "help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.",
"help_no_selection": "Selecteer een bestand om hoogte gegevens op te vragen." "help_no_selection": "Selecteer een bestand om hoogte gegevens op te vragen."
}, },
"waypoint": { "waypoint": {
@@ -304,10 +304,8 @@
"switzerland": "Zwitserland", "switzerland": "Zwitserland",
"united_kingdom": "Verenigd Koninkrijk", "united_kingdom": "Verenigd Koninkrijk",
"united_states": "Verenigde Staten", "united_states": "Verenigde Staten",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satelliet", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Sveits", "switzerland": "Sveits",
"united_kingdom": "Storbritannia", "united_kingdom": "Storbritannia",
"united_states": "USA", "united_states": "USA",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Szwajcaria", "switzerland": "Szwajcaria",
"united_kingdom": "Wielka Brytania", "united_kingdom": "Wielka Brytania",
"united_states": "Stany Zjednoczone", "united_states": "Stany Zjednoczone",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suíça", "switzerland": "Suíça",
"united_kingdom": "Reino Unido", "united_kingdom": "Reino Unido",
"united_states": "Estados Unidos", "united_states": "Estados Unidos",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Suíça", "switzerland": "Suíça",
"united_kingdom": "Reino Unido", "united_kingdom": "Reino Unido",
"united_states": "Estados Unidos", "united_states": "Estados Unidos",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Elveția", "switzerland": "Elveția",
"united_kingdom": "Regatul Unit", "united_kingdom": "Regatul Unit",
"united_states": "Statele Unite ale Americii", "united_states": "Statele Unite ale Americii",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Швейцария", "switzerland": "Швейцария",
"united_kingdom": "Великобритания", "united_kingdom": "Великобритания",
"united_states": "Соединенные Штаты Америки", "united_states": "Соединенные Штаты Америки",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Švajcarska", "switzerland": "Švajcarska",
"united_kingdom": "Ujedinjeno Kraljevstvo", "united_kingdom": "Ujedinjeno Kraljevstvo",
"united_states": "Sjеdinjеnе Američke Državе", "united_states": "Sjеdinjеnе Američke Državе",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Schweiz", "switzerland": "Schweiz",
"united_kingdom": "Storbritannien", "united_kingdom": "Storbritannien",
"united_states": "USA", "united_states": "USA",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "İsviçre", "switzerland": "İsviçre",
"united_kingdom": "Birleşik Krallık", "united_kingdom": "Birleşik Krallık",
"united_states": "Birlişik Devletler", "united_states": "Birlişik Devletler",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Швейцарія", "switzerland": "Швейцарія",
"united_kingdom": "Велика Британія\nВеликобританія", "united_kingdom": "Велика Британія\nВеликобританія",
"united_states": "Сполучені Штати", "united_states": "Сполучені Штати",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "Switzerland", "switzerland": "Switzerland",
"united_kingdom": "United Kingdom", "united_kingdom": "United Kingdom",
"united_states": "United States", "united_states": "United States",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
+2 -4
View File
@@ -304,10 +304,8 @@
"switzerland": "瑞士", "switzerland": "瑞士",
"united_kingdom": "英国", "united_kingdom": "英国",
"united_states": "美国", "united_states": "美国",
"libertyTopo": "Liberty Topo", "topo": "Topo",
"libertySatellite": "Liberty Satellite", "satellite": "Satellite",
"osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",
"openStreetMap": "OpenStreetMap", "openStreetMap": "OpenStreetMap",
"openTopoMap": "OpenTopoMap", "openTopoMap": "OpenTopoMap",
@@ -19,8 +19,8 @@
return; return;
} }
embeddingOptions = getMergedEmbeddingOptions(options); embeddingOptions = getMergedEmbeddingOptions(options);
if (embeddingOptions.key === '' && embeddingOptions.basemap === 'satellite') { if (embeddingOptions.key === '' && embeddingOptions.basemap.startsWith('maptiler')) {
embeddingOptions.basemap = 'libertyTopo'; embeddingOptions.basemap = 'openStreetMap';
} }
}); });
</script> </script>
+47
View File
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Vrstva_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 812 212" style="enable-background:new 0 0 812 212;" xml:space="preserve">
<style type="text/css">
.st0{fill:#3A1888;}
.st1{fill:#03A1C4;}
.st2{fill:#05D0DF;}
.st3{fill:#761FE8;}
.st4{fill:#FFAA01;}
.st5{fill:#F1175D;}
.st6{fill:#FB3A1B;}
.st7{fill:#FBC935;}
.st8{fill:#FFFFFF;}
</style>
<g>
<path class="st0" d="M94.3,164.2c9.2,9.2,33.8,34.3,33.8,34.3c-0.1,0.2,24.4-24.5,34.2-34.2l-34.1-34.1L94.3,164.2z"/>
<path class="st1" d="M128.3,130.2l34.1,34.1c0.1-0.1,0.1-0.1,0.2-0.2l34-34L162.5,96L128.3,130.2z"/>
<path class="st2" d="M196.6,130.1L196.6,130.1c18.9-18.9,18.9-49.4,0.1-68.3L162.5,96L196.6,130.1z"/>
<path class="st3" d="M94.1,96l-34,34c0,0,0,0,0,0l34.1,34.1c0,0,0,0,0.1,0.1l34-34L94.1,96z"/>
<path class="st4" d="M128.3,61.8L162.5,96l34.2-34.2c0,0,0,0-0.1-0.1l-34.1-34.1c0,0,0,0,0,0L128.3,61.8z"/>
<path class="st5" d="M60,61.9c-18.7,18.9-18.6,49.3,0.1,68.1l34-34L60,61.9z"/>
<path class="st6" d="M128.3,61.8L94.2,27.7l-34,34c-0.1,0.1-0.1,0.1-0.2,0.2L94.1,96L128.3,61.8z"/>
<path class="st7" d="M162.5,27.6c-18.9-18.8-49.4-18.8-68.2,0l-0.1,0.1l34.1,34.1L162.5,27.6z"/>
</g>
<path class="st8" d="M303.8,138.6v-34.9c0-8.6-4.5-16.4-13.3-16.4c-8.7,0-13.9,7.8-13.9,16.4v34.9h-16.1V73.4h14.9l1.2,7.9
c3.4-6.6,11-9,17.2-9c7.8,0,15.6,3.2,19.3,12.2c5.8-9.2,13.3-11.9,21.8-11.9c18.5,0,27.6,11.4,27.6,30.9v35.1h-16.1v-35.1
c0-8.6-3.6-15.9-12.3-15.9c-8.7,0-14.1,7.5-14.1,16.1v34.9H303.8z"/>
<path class="st8" d="M430.5,73.5h15.5v65.1h-15.2l-0.8-9.5c-3.7,7.7-13.9,11.4-21.1,11.5c-19.3,0.1-33.6-11.8-33.6-34.6
c0-22.5,14.9-34.2,34-34.1c8.7,0,17,4.1,20.7,10.6L430.5,73.5z M391.4,106c0,12.4,8.6,19.8,19.3,19.8c25.4,0,25.4-39.5,0-39.5
C399.9,86.3,391.4,93.6,391.4,106z"/>
<path class="st8" d="M459.5,165.8V73.5h15.1l1.1,9c5-7.3,13.7-10.4,21.1-10.4c20.1,0,33.4,14.9,33.4,34.1c0,19-12,34.1-32.9,34.1
c-6.9,0-17-2.1-21.7-9.3v34.9H459.5z M514.1,106.1c0-10.2-6.9-18.5-18.5-18.5c-11.6,0-18.5,8.3-18.5,18.5c0,10.2,7.5,18.5,18.5,18.5
C506.6,124.6,514.1,116.3,514.1,106.1z"/>
<path class="st8" d="M559,53.7v19.7h22.2v5.4H559v39.8c0,8.8,1.9,15.1,12,15.1c3.2,0,6.7-1.1,10-2.6l2.2,5.3
c-4.1,2-8.2,3.3-12.3,3.3c-13.9,0-18.4-8.2-18.4-21V78.8h-13.9v-5.4h13.9v-19L559,53.7z"/>
<path class="st8" d="M604.7,52.1c0,6.9-10.4,6.9-10.4,0C594.3,45.2,604.7,45.2,604.7,52.1z M596.1,73.1v65.5h6.5V73.1H596.1z"/>
<path class="st8" d="M627.6,46.2v92.5h-6.5V46.2H627.6z"/>
<path class="st8" d="M730.2,73.4l0.3,11.6c4.1-8.9,13.3-12.3,21.7-12.3c4.9-0.1,9.6,1.2,14,3.8l-2.9,5.3c-3.4-2.1-7.3-3-11.1-3
c-12.2,0.1-21.5,9.9-21.5,21.8v38h-6.5V73.4H730.2z"/>
<g>
<path class="st8" d="M675.1,134.7c-11.5,0-21.4-7.2-25.5-17.4l0,0l0,0c0,0,0,0,0,0l52.8-14c0,0,0,0,0,0.1l5.6-1.5
c-2.3-16.5-16.2-29.3-33-29.3c-18.4,0-33.3,15.2-33.3,34c0,18.8,14.9,34,33.3,34c13.8,0,25.6-8.5,30.6-20.7l-5.3-2.3
C696.2,127.6,686.4,134.7,675.1,134.7z M647.5,106.6c0-15.5,12.3-28.1,27.5-28.1c11.9,0,22,7.7,25.9,18.5L647.9,111
C647.6,109.5,647.5,108.1,647.5,106.6z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

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

After

Width:  |  Height:  |  Size: 3.1 KiB