mirror of
https://github.com/gpxstudio/gpx.studio.git
synced 2025-08-31 15:43:25 +00:00
all layers except strava
This commit is contained in:
@@ -71,7 +71,211 @@ export const basemaps: { [key: string]: string | Style; } = {
|
||||
source: 'cyclOSM',
|
||||
}],
|
||||
},
|
||||
linz: 'https://basemaps.linz.govt.nz/v1/tiles/topographic/EPSG:3857/style/topographic.json?api=d01fbtg0ar23gctac5m0jgyy2ds'
|
||||
linz: 'https://basemaps.linz.govt.nz/v1/tiles/topographic/EPSG:3857/style/topographic.json?api=d01fbtg0ar23gctac5m0jgyy2ds',
|
||||
swisstopo: {
|
||||
version: 8,
|
||||
sources: {
|
||||
swisstopo: {
|
||||
type: 'raster',
|
||||
tiles: ['https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'swisstopo',
|
||||
type: 'raster',
|
||||
source: 'swisstopo',
|
||||
}],
|
||||
},
|
||||
linzTopo: {
|
||||
version: 8,
|
||||
sources: {
|
||||
linzTopo: {
|
||||
type: 'raster',
|
||||
tiles: ['https://tiles-cdn.koordinates.com/services;key=39a8b989633a4bef98bc0e065380454a/tiles/v4/layer=50767/EPSG:3857/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.linz.govt.nz/" target="_blank">LINZ</a>'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'linzTopo',
|
||||
type: 'raster',
|
||||
source: 'linzTopo',
|
||||
}],
|
||||
},
|
||||
ignPlanV2: {
|
||||
version: 8,
|
||||
sources: {
|
||||
ignPlanV2: {
|
||||
type: 'raster',
|
||||
tiles: ['https://data.geopf.fr/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&STYLE=normal&TILEMATRIXSET=PM&FORMAT=image/png&LAYER=GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: 'IGN-F/Géoportail'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'ignPlanV2',
|
||||
type: 'raster',
|
||||
source: 'ignPlanV2',
|
||||
}],
|
||||
},
|
||||
ignFrScan25: {
|
||||
version: 8,
|
||||
sources: {
|
||||
ignFrScan25: {
|
||||
type: 'raster',
|
||||
tiles: ['https://wxs.ign.fr/ifj1o8jmglxpfn6p1tn4b3g1/geoportail/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&TILEMATRIXSET=PM&TILEMATRIX={z}&TILECOL={x}&TILEROW={y}&LAYER=GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN25TOUR&FORMAT=image/jpeg&STYLE=normal'],
|
||||
tileSize: 256,
|
||||
maxzoom: 16,
|
||||
attribution: 'IGN-F/Géoportail'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'ignFrScan25',
|
||||
type: 'raster',
|
||||
source: 'ignFrScan25',
|
||||
}],
|
||||
},
|
||||
ignSatellite: {
|
||||
version: 8,
|
||||
sources: {
|
||||
ignSatellite: {
|
||||
type: 'raster',
|
||||
tiles: ['https://data.geopf.fr/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&STYLE=normal&TILEMATRIXSET=PM&FORMAT=image/jpeg&LAYER=ORTHOIMAGERY.ORTHOPHOTOS&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}'],
|
||||
tileSize: 256,
|
||||
maxzoom: 19,
|
||||
attribution: 'IGN-F/Géoportail'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'ignSatellite',
|
||||
type: 'raster',
|
||||
source: 'ignSatellite',
|
||||
}],
|
||||
},
|
||||
ignEs: {
|
||||
version: 8,
|
||||
sources: {
|
||||
ignEs: {
|
||||
type: 'raster',
|
||||
tiles: ['https://www.ign.es/wmts/mapa-raster?layer=MTN&style=default&tilematrixset=GoogleMapsCompatible&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/jpeg&TileMatrix={z}&TileCol={x}&TileRow={y}'],
|
||||
tileSize: 256,
|
||||
maxzoom: 20,
|
||||
attribution: 'IGN-F/Géoportail'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'ignEs',
|
||||
type: 'raster',
|
||||
source: 'ignEs',
|
||||
}],
|
||||
},
|
||||
ordnanceSurvey: {
|
||||
version: 8,
|
||||
sources: {
|
||||
ordnanceSurvey: {
|
||||
type: 'raster',
|
||||
tiles: ['https://api.os.uk/maps/raster/v1/zxy/Outdoor_3857/{z}/{x}/{y}.png?key=piCT8WysfuC3xLSUW7sGLfrAAJoYDvQz'],
|
||||
tileSize: 256,
|
||||
maxzoom: 20,
|
||||
attribution: '© <a href="http://www.ordnancesurvey.co.uk/" target="_blank">Ordnance Survey</a>'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'ordnanceSurvey',
|
||||
type: 'raster',
|
||||
source: 'ordnanceSurvey',
|
||||
}],
|
||||
},
|
||||
norwayTopo: {
|
||||
version: 8,
|
||||
sources: {
|
||||
norwayTopo: {
|
||||
type: 'raster',
|
||||
tiles: ['https://opencache.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo4&zoom={z}&x={x}&y={y}', 'https://opencache2.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo4&zoom={z}&x={x}&y={y}', 'https://opencache3.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo4&zoom={z}&x={x}&y={y}'],
|
||||
tileSize: 256,
|
||||
maxzoom: 20,
|
||||
attribution: '© <a href="https://www.geonorge.no/" target="_blank">Geonorge</a>'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'norwayTopo',
|
||||
type: 'raster',
|
||||
source: 'norwayTopo',
|
||||
}],
|
||||
},
|
||||
swedenTopo: {
|
||||
version: 8,
|
||||
sources: {
|
||||
swedenTopo: {
|
||||
type: 'raster',
|
||||
tiles: ['https://api.lantmateriet.se/open/topowebb-ccby/v1/wmts/token/1d54dd14-a28c-38a9-b6f3-b4ebfcc3c204/1.0.0/topowebb/default/3857/{z}/{y}/{x}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 14,
|
||||
attribution: '© <a href="https://www.lantmateriet.se" target="_blank">Lantmäteriet</a>'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'swedenTopo',
|
||||
type: 'raster',
|
||||
source: 'swedenTopo',
|
||||
}],
|
||||
},
|
||||
finlandTopo: {
|
||||
version: 8,
|
||||
sources: {
|
||||
finlandTopo: {
|
||||
type: 'raster',
|
||||
tiles: ['https://avoin-karttakuva.maanmittauslaitos.fi/avoin/wmts?layer=maastokartta&style=default&tilematrixset=WGS84_Pseudo-Mercator&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/png&TileMatrix={z}&TileCol={x}&TileRow={y}&api-key=30cb768c-c968-493c-ae24-2b0b974ebd29'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.maanmittauslaitos.fi/" target="_blank">Maanmittauslaitos</a>'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'finlandTopo',
|
||||
type: 'raster',
|
||||
source: 'finlandTopo',
|
||||
}],
|
||||
},
|
||||
bgMountains: {
|
||||
version: 8,
|
||||
sources: {
|
||||
bgMountains: {
|
||||
type: 'raster',
|
||||
tiles: ['https://bgmtile.kade.si/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 19,
|
||||
attribution: '<a href="http://mountain.bajhui.org/trac/wiki/BGMountains%20%D0%BB%D0%B5%D0%B3%D0%B5%D0%BD%D0%B4%D0%B0" target="_blank">BGM Legend</a> / <a href="https://cart.uni-plovdiv.net/" target="_blank">CART Lab</a>, <a href="http://www.bgmountains.org/" target="_blank">BGM team</a>, © <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">CC BY-SA 4.0</a>, <a href="http://bgmountains.org/en/maps/garmin-maps/category/9-bgmountains/" target="_blank">Garmin version</a>'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'bgMountains',
|
||||
type: 'raster',
|
||||
source: 'bgMountains',
|
||||
}],
|
||||
},
|
||||
usgs: {
|
||||
version: 8,
|
||||
sources: {
|
||||
usgs: {
|
||||
type: 'raster',
|
||||
tiles: ['https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}?blankTile=false'],
|
||||
tileSize: 256,
|
||||
maxzoom: 16,
|
||||
attribution: '© <a href="usgs.gov" target="_blank">USGS</a>'
|
||||
}
|
||||
},
|
||||
layers: [{
|
||||
id: 'usgs',
|
||||
type: 'raster',
|
||||
source: 'usgs',
|
||||
}],
|
||||
},
|
||||
};
|
||||
|
||||
export const overlays: { [key: string]: AnySourceData; } = {
|
||||
@@ -82,4 +286,87 @@ export const overlays: { [key: string]: AnySourceData; } = {
|
||||
maxzoom: 17,
|
||||
attribution: '© <a href="https://github.com/cyclosm/cyclosm-cartocss-style/releases" title="CyclOSM - Open Bicycle render">CyclOSM</a> © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
||||
},
|
||||
swisstopoSlope: {
|
||||
type: 'raster',
|
||||
tiles: ['https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.hangneigung-ueber_30/default/current/3857/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 17,
|
||||
attribution: '© <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
|
||||
},
|
||||
swisstopoCycling: {
|
||||
type: 'raster',
|
||||
tiles: ['https://wmts.geo.admin.ch/1.0.0/ch.astra.veloland/default/current/3857/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>'
|
||||
},
|
||||
swisstopoMountainBike: {
|
||||
type: 'raster',
|
||||
tiles: ['https://wmts.geo.admin.ch/1.0.0/ch.astra.mountainbikeland/default/current/3857/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>'
|
||||
},
|
||||
ignFrCadastre: {
|
||||
type: 'raster',
|
||||
tiles: ['https://data.geopf.fr/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&TILEMATRIXSET=PM&TILEMATRIX={z}&TILECOL={x}&TILEROW={y}&LAYER=CADASTRALPARCELS.PARCELS&FORMAT=image/png&STYLE=normal'],
|
||||
tileSize: 256,
|
||||
maxzoom: 20,
|
||||
attribution: 'IGN-F/Géoportail'
|
||||
},
|
||||
ignSlope: {
|
||||
type: 'raster',
|
||||
tiles: ['https://data.geopf.fr/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&TileMatrixSet=PM&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&Layer=GEOGRAPHICALGRIDSYSTEMS.SLOPES.MOUNTAIN&FORMAT=image/png&Style=normal'],
|
||||
tileSize: 256,
|
||||
maxzoom: 17,
|
||||
attribution: 'IGN-F/Géoportail'
|
||||
},
|
||||
waymarkedTrailsHiking: {
|
||||
type: 'raster',
|
||||
tiles: ['https://tile.waymarkedtrails.org/hiking/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>'
|
||||
},
|
||||
waymarkedTrailsCycling: {
|
||||
type: 'raster',
|
||||
tiles: ['https://tile.waymarkedtrails.org/cycling/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>'
|
||||
},
|
||||
waymarkedTrailsMTB: {
|
||||
type: 'raster',
|
||||
tiles: ['https://tile.waymarkedtrails.org/mtb/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>'
|
||||
},
|
||||
waymarkedTrailsSkating: {
|
||||
type: 'raster',
|
||||
tiles: ['https://tile.waymarkedtrails.org/skating/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>'
|
||||
},
|
||||
waymarkedTrailsHorseRiding: {
|
||||
type: 'raster',
|
||||
tiles: ['https://tile.waymarkedtrails.org/riding/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>'
|
||||
},
|
||||
waymarkedTrailsWinter: {
|
||||
type: 'raster',
|
||||
tiles: ['https://tile.waymarkedtrails.org/slopes/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 18,
|
||||
attribution: '© <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>'
|
||||
},
|
||||
};
|
||||
|
||||
export const opacities: { [key: string]: number; } = {
|
||||
ignFrCadastre: 0.5,
|
||||
ignSlope: 0.4,
|
||||
swisstopoSlope: 0.4,
|
||||
};
|
@@ -9,7 +9,7 @@
|
||||
import * as RadioGroup from '$lib/components/ui/radio-group';
|
||||
import { Checkbox } from '$lib/components/ui/checkbox';
|
||||
|
||||
import { basemaps, overlays } from '$lib/assets/layers';
|
||||
import { basemaps, overlays, opacities } from '$lib/assets/layers';
|
||||
|
||||
export let map: mapboxgl.Map | null;
|
||||
|
||||
@@ -36,27 +36,35 @@
|
||||
</div>
|
||||
{/each}
|
||||
</RadioGroup.Root>
|
||||
<div>
|
||||
<div class="flex flex-col">
|
||||
{#each Object.keys(overlays) as id}
|
||||
<Checkbox
|
||||
{id}
|
||||
onCheckedChange={(checked) => {
|
||||
console.log('onCheckedChange', map?.isStyleLoaded());
|
||||
if (checked) {
|
||||
if (!map.getSource(id)) {
|
||||
map.addSource(id, overlays[id]);
|
||||
<div>
|
||||
<Checkbox
|
||||
{id}
|
||||
onCheckedChange={(checked) => {
|
||||
if (checked) {
|
||||
if (!map.getSource(id)) {
|
||||
map.addSource(id, overlays[id]);
|
||||
}
|
||||
map.addLayer({
|
||||
id,
|
||||
type: overlays[id].type === 'raster' ? 'raster' : 'line',
|
||||
source: id,
|
||||
paint: {
|
||||
...(id in opacities
|
||||
? overlays[id].type === 'raster'
|
||||
? { 'raster-opacity': opacities[id] }
|
||||
: { 'line-opacity': opacities[id] }
|
||||
: {})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
map.removeLayer(id);
|
||||
}
|
||||
map.addLayer({
|
||||
id,
|
||||
type: overlays[id].type === 'raster' ? 'raster' : 'line',
|
||||
source: id
|
||||
});
|
||||
} else {
|
||||
map.removeLayer(id);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
<Label for={id}>{id}</Label>
|
||||
}}
|
||||
/>
|
||||
<Label for={id}>{id}</Label>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user