28 Commits

Author SHA1 Message Date
vcoppe 4537ea4730 Merge branch 'dev' 2026-06-03 19:05:25 +02:00
vcoppe 7f8751fa38 turn wikipedia tags into links, closes #354 2026-06-03 19:05:15 +02:00
vcoppe 1954bbd764 Merge branch 'dev' 2026-06-03 18:48:43 +02:00
vcoppe befcba00b4 hopefully more reliable initial fitBounds 2026-06-03 18:48:07 +02:00
vcoppe 9d2da80893 Merge branch 'dev' 2026-05-31 15:26:17 +02:00
vcoppe 26e4b637a2 New Crowdin updates (#353)
* New translations en.json (Dutch)

[ci skip]

* New translations map-controls.mdx (Dutch)

[ci skip]

* New translations elevation.mdx (Dutch)

[ci skip]
2026-05-31 15:25:59 +02:00
vcoppe 75e3bc6f93 use self-hosted overpass api 2026-05-31 15:25:10 +02:00
vcoppe 043d368c74 Merge branch 'dev' 2026-05-29 08:37:39 +02:00
vcoppe 70bb125076 change contour line labels for all compatible styles 2026-05-29 08:35:11 +02:00
vcoppe bb11d3375b Merge branch 'dev' 2026-05-28 19:29:34 +02:00
vcoppe bfe5961e27 Merge branch 'dev' 2026-05-21 20:27:41 +02:00
vcoppe 17559913fd Merge branch 'dev' 2026-04-19 16:49:41 +02:00
vcoppe 55590d68a6 Merge branch 'dev' 2026-04-19 16:34:17 +02:00
vcoppe 8e9f16c460 Merge branch 'dev' 2026-04-19 14:47:35 +02:00
vcoppe c60b64f24f Merge branch 'dev' 2026-04-17 22:10:40 +02:00
vcoppe fdb6fe4e52 Merge branch 'dev' 2026-04-17 20:11:25 +02:00
vcoppe 0bf168e67e Merge branch 'dev' 2026-04-09 21:10:56 +02:00
vcoppe d762a45eb9 Merge branch 'dev' 2026-04-09 20:57:30 +02:00
vcoppe 548ab9a459 Merge branch 'dev' 2026-04-07 22:19:15 +02:00
vcoppe 315c1f6a61 Merge branch 'dev' 2026-04-07 22:02:14 +02:00
vcoppe 98257bee12 Merge branch 'dev' 2026-04-06 18:26:22 +02:00
vcoppe 5561b7d9fe Merge branch 'dev' 2026-04-06 14:26:56 +02:00
vcoppe 320887206c Merge branch 'dev' 2026-04-04 23:15:01 +02:00
vcoppe 04a1bf6a55 Merge branch 'dev' 2026-04-03 08:47:57 +02:00
vcoppe 0989371874 Merge branch 'dev' 2026-04-03 08:06:19 +02:00
vcoppe 3dcd6e52d3 Merge branch 'dev' 2026-04-02 22:35:46 +02:00
vcoppe 0f06d0d461 update 2026-04-02 22:23:34 +02:00
vcoppe db33310a10 revert some changes 2026-04-02 22:20:47 +02:00
8 changed files with 40 additions and 28 deletions
@@ -45,26 +45,6 @@
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;
} }
@@ -90,6 +70,27 @@
].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(() => {
@@ -88,6 +88,14 @@
<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.private.coffee/api/interpreter'; overpassUrl = 'https://overpass.gpx.studio/api/interpreter';
minZoom = 12; minZoom = 12;
queryZoom = 12; queryZoom = 12;
expirationTime = 7 * 24 * 3600 * 1000; expirationTime = 7 * 24 * 3600 * 1000;
+4 -1
View File
@@ -59,7 +59,10 @@ export class StyleManager {
terrainSource.subscribe(() => this.updateTerrain()); terrainSource.subscribe(() => this.updateTerrain());
customLayers.subscribe(() => this.updateBasemap()); customLayers.subscribe(() => this.updateBasemap());
distanceUnits.subscribe(() => { distanceUnits.subscribe(() => {
if (get(currentBasemap) === 'libertyTopo') this.updateBasemap(); const map = get(this._map);
if (map && (map.getLayer('contours_m') || map.getLayer('contours_ft'))) {
this.updateBasemap();
}
}); });
} }
+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">
Hover over the map to show the <a href="https://hiking.waymarkedtrails.org" target="_blank">Waymarked Trails hiking</a> overlay on top of the topographic basemap. Beweeg over de kaart om de <a href="https://hiking.waymarkedtrails.org" target="_blank">Gemarkeerde sporen wandelen</a> overlay te tonen bovenop de topografische basiskaart.
</span> </span>
</div> </div>
@@ -18,7 +18,7 @@ Met dit gereedschap kun je hoogtegegevens toevoegen aan sporen en [interessante
<DocsNote> <DocsNote>
Elevation data is provided by <a href="https://mapterhorn.com" target="_blank">Mapterhorn</a>. Hoogtegegevens worden verstrekt door <a href="https://maptiler.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>. Je kunt meer leren over de oorsprong en nauwkeurigheid in de <a href="https://mapterhorn.com/attribution/" target="_blank">documentatie</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, easing: () => 1 }); map_.fitBounds(this._bounds, { padding: 80, linear: true, animate: false });
this.reset(); this.reset();
}) })
); );
+2 -2
View File
@@ -235,7 +235,7 @@
}, },
"elevation": { "elevation": {
"button": "Hoogtegegevens opvragen", "button": "Hoogtegegevens opvragen",
"help": "Requesting elevation data will erase the existing elevation data, if any, and replace it with data from Mapterhorn.", "help": "Het opvragen van hoogtegegevens verwijdert de bestaande hoogtegegevens, indien aanwezig, en vervangt deze door gegevens van Mapterhorn.",
"help_no_selection": "Selecteer een bestand om hoogte gegevens op te vragen." "help_no_selection": "Selecteer een bestand om hoogte gegevens op te vragen."
}, },
"waypoint": { "waypoint": {
@@ -305,7 +305,7 @@
"united_kingdom": "Verenigd Koninkrijk", "united_kingdom": "Verenigd Koninkrijk",
"united_states": "Verenigde Staten", "united_states": "Verenigde Staten",
"libertyTopo": "Liberty Topo", "libertyTopo": "Liberty Topo",
"libertySatellite": "Liberty Satellite", "libertySatellite": "Liberty Satelliet",
"osm": "OpenMapTiles OSM", "osm": "OpenMapTiles OSM",
"osmTopo": "OpenMapTiles OSM Topo", "osmTopo": "OpenMapTiles OSM Topo",
"esriSatellite": "Esri Satellite", "esriSatellite": "Esri Satellite",