Files
gpx.studio/website/src/lib/assets/layers.ts

1447 lines
42 KiB
TypeScript
Raw Normal View History

import {
TramFront,
Utensils,
ShoppingBasket,
Droplet,
ShowerHead,
Fuel,
CircleParking,
Fence,
FerrisWheel,
Bed,
Mountain,
Pickaxe,
Store,
TrainFront,
Bus,
Ship,
Croissant,
House,
Tent,
Wrench,
Binoculars,
Toilet,
} from 'lucide-static';
2024-10-02 12:49:08 +02:00
import { type StyleSpecification } from 'mapbox-gl';
2024-07-24 14:01:00 +02:00
import ignFrTopo from './custom/ign-fr-topo.json';
import ignFrPlan from './custom/ign-fr-plan.json';
import ignFrSatellite from './custom/ign-fr-satellite.json';
import bikerouterGravel from './custom/bikerouter-gravel.json';
2024-04-11 17:18:21 +02:00
export const basemaps: { [key: string]: string | StyleSpecification } = {
2024-04-11 17:18:21 +02:00
mapboxOutdoors: 'mapbox://styles/mapbox/outdoors-v12',
2024-05-08 21:31:54 +02:00
mapboxSatellite: 'mapbox://styles/mapbox/satellite-streets-v12',
2024-04-11 17:18:21 +02:00
openStreetMap: {
version: 8,
sources: {
openStreetMap: {
type: 'raster',
tiles: [
'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png',
'https://b.tile.openstreetmap.org/{z}/{x}/{y}.png',
'https://c.tile.openstreetmap.org/{z}/{x}/{y}.png',
],
2024-04-11 17:18:21 +02:00
tileSize: 256,
2024-09-24 17:41:49 +02:00
maxzoom: 19,
attribution:
'&copy; <a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a>',
},
2024-04-11 17:18:21 +02:00
},
layers: [
{
id: 'openStreetMap',
type: 'raster',
source: 'openStreetMap',
},
],
2024-04-11 17:18:21 +02:00
},
openTopoMap: {
version: 8,
sources: {
openTopoMap: {
type: 'raster',
tiles: ['https://tile.opentopomap.org/{z}/{x}/{y}.png'],
tileSize: 256,
maxzoom: 17,
attribution:
'&copy; <a href="https://www.opentopomap.org" target="_blank">OpenTopoMap</a> &copy; <a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a>',
},
2024-04-11 17:18:21 +02:00
},
layers: [
{
id: 'openTopoMap',
type: 'raster',
source: 'openTopoMap',
},
],
2024-04-11 17:18:21 +02:00
},
openHikingMap: {
version: 8,
sources: {
openHikingMap: {
type: 'raster',
tiles: ['https://maps.refuges.info/hiking/{z}/{x}/{y}.png'],
tileSize: 256,
maxzoom: 18,
attribution:
'&copy; <a href="https://wiki.openstreetmap.org/wiki/Hiking/mri" target="_blank">sly</a> &copy; <a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a>',
},
2024-04-11 17:18:21 +02:00
},
layers: [
{
id: 'openHikingMap',
type: 'raster',
source: 'openHikingMap',
},
],
2024-04-11 17:18:21 +02:00
},
cyclOSM: {
version: 8,
sources: {
cyclOSM: {
type: 'raster',
tiles: [
'https://a.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png',
'https://b.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png',
'https://c.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png',
],
2024-04-11 17:18:21 +02:00
tileSize: 256,
2024-09-24 17:41:49 +02:00
maxzoom: 18,
attribution:
'&copy; <a href="https://github.com/cyclosm/cyclosm-cartocss-style/releases" title="CyclOSM - Open Bicycle render">CyclOSM</a> &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',
},
2024-04-11 17:18:21 +02:00
},
layers: [
{
id: 'cyclOSM',
type: 'raster',
source: 'cyclOSM',
},
],
2024-04-11 17:18:21 +02:00
},
2024-07-18 12:45:25 +02:00
swisstopoRaster: {
version: 8,
sources: {
swisstopoRaster: {
type: 'raster',
tiles: [
'https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg',
],
2024-07-18 12:45:25 +02:00
tileSize: 128,
maxzoom: 19,
attribution:
'&copy; <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
},
2024-07-18 12:45:25 +02:00
},
layers: [
{
id: 'swisstopoRaster',
type: 'raster',
source: 'swisstopoRaster',
},
],
2024-07-18 12:45:25 +02:00
},
swisstopoVector: 'https://vectortiles.geo.admin.ch/styles/ch.swisstopo.basemap.vt/style.json',
swisstopoSatellite:
'https://vectortiles.geo.admin.ch/styles/ch.swisstopo.imagerybasemap.vt/style.json',
2024-06-07 15:54:40 +02:00
linz: 'https://basemaps.linz.govt.nz/v1/tiles/topographic/EPSG:3857/style/topographic.json?api=d01fbtg0ar23gctac5m0jgyy2ds',
2024-04-11 17:51:48 +02:00
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',
],
2024-04-11 17:51:48 +02:00
tileSize: 256,
maxzoom: 18,
attribution: '&copy; <a href="https://www.linz.govt.nz/" target="_blank">LINZ</a>',
},
2024-04-11 17:51:48 +02:00
},
layers: [
{
id: 'linzTopo',
type: 'raster',
source: 'linzTopo',
},
],
2024-04-11 17:51:48 +02:00
},
2024-06-09 16:53:04 +02:00
ignBe: {
version: 8,
sources: {
ignBe: {
type: 'raster',
tiles: ['https://cartoweb.wmts.ngi.be/1.0.0/topo/default/3857/{z}/{y}/{x}.png'],
tileSize: 256,
maxzoom: 17,
attribution: '© <a href="https://www.ngi.be/" target="_blank">IGN/NGI</a>',
},
2024-06-09 16:53:04 +02:00
},
layers: [
{
id: 'ignBe',
type: 'raster',
source: 'ignBe',
},
],
2024-06-09 16:53:04 +02:00
},
2024-07-24 14:01:00 +02:00
ignFrPlan: ignFrPlan,
ignFrTopo: ignFrTopo,
2024-04-11 17:51:48 +02:00
ignFrScan25: {
version: 8,
sources: {
ignFrScan25: {
type: 'raster',
tiles: [
'https://data.geopf.fr/private/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&TILEMATRIXSET=PM&TILEMATRIX={z}&TILECOL={x}&TILEROW={y}&LAYER=GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN25TOUR&FORMAT=image/jpeg&STYLE=normal&apikey=ign_scan_ws',
],
2024-04-11 17:51:48 +02:00
tileSize: 256,
maxzoom: 16,
attribution: 'IGN-F/Géoportail',
},
2024-04-11 17:51:48 +02:00
},
layers: [
{
id: 'ignFrScan25',
type: 'raster',
source: 'ignFrScan25',
},
],
2024-04-11 17:51:48 +02:00
},
2024-07-24 14:01:00 +02:00
ignFrSatellite: ignFrSatellite,
2024-04-11 17:51:48 +02:00
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}',
],
2024-04-11 17:51:48 +02:00
tileSize: 256,
maxzoom: 20,
attribution: '&copy; <a href="https://www.ign.es" target="_blank">IGN</a>',
},
2024-04-11 17:51:48 +02:00
},
layers: [
{
id: 'ignEs',
type: 'raster',
source: 'ignEs',
},
],
2024-04-11 17:51:48 +02:00
},
2024-10-05 17:06:17 +02:00
ignEsSatellite: {
version: 8,
sources: {
ignEsSatellite: {
type: 'raster',
tiles: [
'https://www.ign.es/wmts/pnoa-ma?layer=OI.OrthoimageCoverage&style=default&tilematrixset=GoogleMapsCompatible&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/jpeg&TileMatrix={z}&TileCol={x}&TileRow={y}',
],
2024-10-05 17:06:17 +02:00
tileSize: 256,
maxzoom: 20,
attribution: '&copy; <a href="https://www.ign.es" target="_blank">IGN</a>',
},
2024-10-05 17:06:17 +02:00
},
layers: [
{
id: 'ignEsSatellite',
type: 'raster',
source: 'ignEsSatellite',
},
],
2024-10-05 17:06:17 +02:00
},
ordnanceSurvey:
'https://api.os.uk/maps/vector/v1/vts/resources/styles?srs=3857&key=piCT8WysfuC3xLSUW7sGLfrAAJoYDvQz',
2024-04-11 17:51:48 +02:00
norwayTopo: {
version: 8,
sources: {
norwayTopo: {
type: 'raster',
tiles: [
'https://cache.kartverket.no/v1/wmts/1.0.0/topo/default/webmercator/{z}/{y}/{x}.png',
],
2024-04-11 17:51:48 +02:00
tileSize: 256,
maxzoom: 20,
attribution:
'&copy; <a href="https://www.geonorge.no/" target="_blank">Geonorge</a>',
},
2024-04-11 17:51:48 +02:00
},
layers: [
{
id: 'norwayTopo',
type: 'raster',
source: 'norwayTopo',
},
],
2024-04-11 17:51:48 +02:00
},
swedenTopo: {
version: 8,
sources: {
2024-09-03 12:45:35 +02:00
swedenTopoWMTS: {
2024-04-11 17:51:48 +02:00
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',
],
2024-04-11 17:51:48 +02:00
tileSize: 256,
maxzoom: 14,
attribution:
'&copy; <a href="https://www.lantmateriet.se" target="_blank">Lantmäteriet</a>',
2024-09-03 12:45:35 +02:00
},
swedenTopoWMS: {
type: 'raster',
tiles: [
'https://minkarta.lantmateriet.se/map/topowebb?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&FORMAT=image%2Fpng&STYLES=&TRANSPARENT=false&LAYERS=topowebbkartan&TILED=true&MAP_RESOLUTION=180&WIDTH=512&HEIGHT=512&SRS=EPSG%3A3857&BBOX={bbox-epsg-3857}',
],
2024-09-03 12:45:35 +02:00
tileSize: 512,
minzoom: 14,
maxzoom: 20,
attribution:
'&copy; <a href="https://www.lantmateriet.se" target="_blank">Lantmäteriet</a>',
},
},
layers: [
{
id: 'swedenTopoWMTS',
type: 'raster',
source: 'swedenTopoWMTS',
maxzoom: 14,
},
{
id: 'swedenTopoWMS',
type: 'raster',
source: 'swedenTopoWMS',
minzoom: 14,
},
],
2024-09-03 12:45:35 +02:00
},
swedenSatellite: {
version: 8,
sources: {
swedenSatellite: {
type: 'raster',
tiles: [
'https://minkarta.lantmateriet.se/map/ortofoto?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&FORMAT=image%2Fpng&STYLES=&TRANSPARENT=false&LAYERS=Ortofoto_0.5%2COrtofoto_0.4%2COrtofoto_0.25%2COrtofoto_0.16&TILED=true&MAP_RESOLUTION=180&WIDTH=512&HEIGHT=512&SRS=EPSG%3A3857&BBOX={bbox-epsg-3857}',
],
2024-09-03 12:45:35 +02:00
tileSize: 512,
maxzoom: 22,
attribution:
'&copy; <a href="https://www.lantmateriet.se" target="_blank">Lantmäteriet</a>',
},
2024-04-11 17:51:48 +02:00
},
layers: [
{
id: 'swedenSatellite',
type: 'raster',
source: 'swedenSatellite',
},
],
2024-04-11 17:51:48 +02:00
},
finlandTopo: {
version: 8,
sources: {
finlandTopo: {
type: 'raster',
tiles: [
'https://avoin-karttakuva.maanmittauslaitos.fi/avoin/wmts?layer=maastokartta&amp;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',
],
2024-04-11 17:51:48 +02:00
tileSize: 256,
maxzoom: 18,
attribution:
'&copy; <a href="https://www.maanmittauslaitos.fi/" target="_blank">Maanmittauslaitos</a>',
},
2024-04-11 17:51:48 +02:00
},
layers: [
{
id: 'finlandTopo',
type: 'raster',
source: 'finlandTopo',
},
],
2024-04-11 17:51:48 +02:00
},
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>',
},
2024-04-11 17:51:48 +02:00
},
layers: [
{
id: 'bgMountains',
type: 'raster',
source: 'bgMountains',
},
],
2024-04-11 17:51:48 +02:00
},
usgs: {
version: 8,
sources: {
usgs: {
type: 'raster',
tiles: [
'https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}?blankTile=false',
],
2024-04-11 17:51:48 +02:00
tileSize: 256,
maxzoom: 16,
attribution: '&copy; <a href="usgs.gov" target="_blank">USGS</a>',
},
2024-04-11 17:51:48 +02:00
},
layers: [
{
id: 'usgs',
type: 'raster',
source: 'usgs',
},
],
2024-04-11 17:51:48 +02:00
},
2024-04-11 17:18:21 +02:00
};
export const overlays: { [key: string]: string | StyleSpecification } = {
2024-04-11 17:18:21 +02:00
cyclOSMlite: {
version: 8,
sources: {
cyclOSMlite: {
type: 'raster',
tiles: [
'https://a.tile-cyclosm.openstreetmap.fr/cyclosm-lite/{z}/{x}/{y}.png',
'https://b.tile-cyclosm.openstreetmap.fr/cyclosm-lite/{z}/{x}/{y}.png',
'https://c.tile-cyclosm.openstreetmap.fr/cyclosm-lite/{z}/{x}/{y}.png',
],
tileSize: 256,
maxzoom: 17,
attribution:
'&copy; <a href="https://github.com/cyclosm/cyclosm-cartocss-style/releases" title="CyclOSM - Open Bicycle render">CyclOSM</a> &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',
},
},
layers: [
{
id: 'cyclOSMlite',
type: 'raster',
source: 'cyclOSMlite',
},
],
2024-04-11 17:18:21 +02:00
},
bikerouterGravel: bikerouterGravel,
2024-04-11 17:51:48 +02:00
swisstopoSlope: {
version: 8,
sources: {
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:
'&copy; <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
},
},
layers: [
{
id: 'swisstopoSlope',
type: 'raster',
source: 'swisstopoSlope',
},
],
2024-04-11 17:51:48 +02:00
},
2024-07-18 12:45:25 +02:00
swisstopoHiking: {
version: 8,
sources: {
swisstopoHiking: {
type: 'raster',
tiles: [
'https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.swisstlm3d-wanderwege/default/current/3857/{z}/{x}/{y}.png',
],
tileSize: 256,
maxzoom: 18,
attribution:
'&copy; <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
},
},
layers: [
{
id: 'swisstopoHiking',
type: 'raster',
source: 'swisstopoHiking',
},
],
2024-07-18 12:45:25 +02:00
},
swisstopoHikingClosures: {
version: 8,
sources: {
swisstopoHikingClosures: {
type: 'raster',
tiles: [
'https://wms.geo.admin.ch/?version=1.3.0&service=WMS&request=GetMap&sld_version=1.1.0&layers=ch.astra.wanderland-sperrungen_umleitungen&format=image/png&STYLE=default&bbox={bbox-epsg-3857}&width=256&height=256&crs=EPSG:3857&transparent=true',
],
tileSize: 256,
attribution:
'&copy; <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
},
},
layers: [
{
id: 'swisstopoHikingClosures',
type: 'raster',
source: 'swisstopoHikingClosures',
},
],
2024-07-18 12:45:25 +02:00
},
2024-04-11 17:51:48 +02:00
swisstopoCycling: {
version: 8,
sources: {
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:
'&copy; <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
},
},
layers: [
{
id: 'swisstopoCycling',
type: 'raster',
source: 'swisstopoCycling',
},
],
2024-04-11 17:51:48 +02:00
},
2024-07-18 12:45:25 +02:00
swisstopoCyclingClosures: {
version: 8,
sources: {
swisstopoCyclingClosures: {
type: 'raster',
tiles: [
'https://wms.geo.admin.ch/?version=1.3.0&service=WMS&request=GetMap&sld_version=1.1.0&layers=ch.astra.veloland-sperrungen_umleitungen&format=image/png&STYLE=default&bbox={bbox-epsg-3857}&width=256&height=256&crs=EPSG:3857&transparent=true',
],
tileSize: 256,
attribution:
'&copy; <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
},
},
layers: [
{
id: 'swisstopoCyclingClosures',
type: 'raster',
source: 'swisstopoCyclingClosures',
},
],
2024-07-18 12:45:25 +02:00
},
2024-04-11 17:51:48 +02:00
swisstopoMountainBike: {
version: 8,
sources: {
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:
'&copy; <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
},
},
layers: [
{
id: 'swisstopoMountainBike',
type: 'raster',
source: 'swisstopoMountainBike',
},
],
2024-04-11 17:51:48 +02:00
},
2024-07-18 12:45:25 +02:00
swisstopoMountainBikeClosures: {
version: 8,
sources: {
swisstopoMountainBikeClosures: {
type: 'raster',
tiles: [
'https://wms.geo.admin.ch/?version=1.3.0&service=WMS&request=GetMap&sld_version=1.1.0&layers=ch.astra.mountainbikeland-sperrungen_umleitungen&format=image/png&STYLE=default&bbox={bbox-epsg-3857}&width=256&height=256&crs=EPSG:3857&transparent=true',
],
tileSize: 256,
attribution:
'&copy; <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
},
},
layers: [
{
id: 'swisstopoMountainBikeClosures',
type: 'raster',
source: 'swisstopoMountainBikeClosures',
},
],
2024-07-18 12:45:25 +02:00
},
2024-06-06 12:52:00 +02:00
swisstopoSkiTouring: {
version: 8,
sources: {
swisstopoSkiTouring: {
type: 'raster',
tiles: [
'https://wmts.geo.admin.ch/1.0.0/ch.swisstopo-karto.skitouren/default/current/3857/{z}/{x}/{y}.png',
],
tileSize: 256,
maxzoom: 17,
attribution:
'&copy; <a href="https://www.swisstopo.admin.ch" target="_blank">swisstopo</a>',
},
},
layers: [
{
id: 'swisstopoSkiTouring',
type: 'raster',
source: 'swisstopoSkiTouring',
},
],
2024-06-06 12:52:00 +02:00
},
2024-04-11 17:51:48 +02:00
ignFrCadastre: {
version: 8,
sources: {
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',
},
},
layers: [
{
id: 'ignFrCadastre',
type: 'raster',
source: 'ignFrCadastre',
},
],
2024-04-11 17:51:48 +02:00
},
ignSlope: {
version: 8,
sources: {
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,
attribution: 'IGN-F/Géoportail',
},
},
layers: [
{
id: 'ignSlope',
type: 'raster',
source: 'ignSlope',
},
],
2024-04-11 17:51:48 +02:00
},
2024-06-06 12:16:07 +02:00
ignSkiTouring: {
version: 8,
sources: {
ignSkiTouring: {
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=TRACES.RANDO.HIVERNALE&FORMAT=image/png&Style=normal',
],
tileSize: 256,
maxzoom: 16,
attribution: 'IGN-F/Géoportail',
},
},
layers: [
{
id: 'ignSkiTouring',
type: 'raster',
source: 'ignSkiTouring',
},
],
2024-06-06 12:16:07 +02:00
},
2024-04-11 17:51:48 +02:00
waymarkedTrailsHiking: {
version: 8,
sources: {
waymarkedTrailsHiking: {
type: 'raster',
tiles: ['https://tile.waymarkedtrails.org/hiking/{z}/{x}/{y}.png'],
tileSize: 256,
maxzoom: 18,
attribution:
'&copy; <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>',
},
},
layers: [
{
id: 'waymarkedTrailsHiking',
type: 'raster',
source: 'waymarkedTrailsHiking',
},
],
2024-04-11 17:51:48 +02:00
},
waymarkedTrailsCycling: {
version: 8,
sources: {
waymarkedTrailsCycling: {
type: 'raster',
tiles: ['https://tile.waymarkedtrails.org/cycling/{z}/{x}/{y}.png'],
tileSize: 256,
maxzoom: 18,
attribution:
'&copy; <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>',
},
},
layers: [
{
id: 'waymarkedTrailsCycling',
type: 'raster',
source: 'waymarkedTrailsCycling',
},
],
2024-04-11 17:51:48 +02:00
},
waymarkedTrailsMTB: {
version: 8,
sources: {
waymarkedTrailsMTB: {
type: 'raster',
tiles: ['https://tile.waymarkedtrails.org/mtb/{z}/{x}/{y}.png'],
tileSize: 256,
maxzoom: 18,
attribution:
'&copy; <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>',
},
},
layers: [
{
id: 'waymarkedTrailsMTB',
type: 'raster',
source: 'waymarkedTrailsMTB',
},
],
2024-04-11 17:51:48 +02:00
},
waymarkedTrailsSkating: {
version: 8,
sources: {
waymarkedTrailsSkating: {
type: 'raster',
tiles: ['https://tile.waymarkedtrails.org/skating/{z}/{x}/{y}.png'],
tileSize: 256,
maxzoom: 18,
attribution:
'&copy; <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>',
},
},
layers: [
{
id: 'waymarkedTrailsSkating',
type: 'raster',
source: 'waymarkedTrailsSkating',
},
],
2024-04-11 17:51:48 +02:00
},
waymarkedTrailsHorseRiding: {
version: 8,
sources: {
waymarkedTrailsHorseRiding: {
type: 'raster',
tiles: ['https://tile.waymarkedtrails.org/riding/{z}/{x}/{y}.png'],
tileSize: 256,
maxzoom: 18,
attribution:
'&copy; <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>',
},
},
layers: [
{
id: 'waymarkedTrailsHorseRiding',
type: 'raster',
source: 'waymarkedTrailsHorseRiding',
},
],
2024-04-11 17:51:48 +02:00
},
waymarkedTrailsWinter: {
version: 8,
sources: {
waymarkedTrailsWinter: {
type: 'raster',
tiles: ['https://tile.waymarkedtrails.org/slopes/{z}/{x}/{y}.png'],
tileSize: 256,
maxzoom: 18,
attribution:
'&copy; <a href="https://www.waymarkedtrails.org" target="_blank">Waymarked Trails</a>',
},
},
layers: [
{
id: 'waymarkedTrailsWinter',
type: 'raster',
source: 'waymarkedTrailsWinter',
},
],
2024-04-11 17:51:48 +02:00
},
};
export const defaultOpacities: { [key: string]: number } = {
2024-04-11 17:51:48 +02:00
ignFrCadastre: 0.5,
ignSlope: 0.4,
swisstopoSlope: 0.4,
2024-04-12 12:38:19 +02:00
};
export type LayerTreeType = { [key: string]: LayerTreeType | boolean };
2024-04-12 13:43:51 +02:00
2024-05-05 18:59:09 +02:00
// Hierarchy containing all basemaps
2024-04-12 13:43:51 +02:00
export const basemapTree: LayerTreeType = {
basemaps: {
2024-05-05 18:59:09 +02:00
world: {
mapboxOutdoors: true,
mapboxSatellite: true,
openStreetMap: true,
openTopoMap: true,
openHikingMap: true,
cyclOSM: true,
2024-05-05 18:59:09 +02:00
},
countries: {
2024-06-09 16:53:04 +02:00
belgium: {
ignBe: true,
},
2024-05-05 18:59:09 +02:00
bulgaria: {
bgMountains: true,
},
finland: {
finlandTopo: true,
},
france: {
2024-06-07 13:19:28 +02:00
ignFrPlan: true,
2024-07-24 12:09:45 +02:00
ignFrTopo: true,
2024-05-05 18:59:09 +02:00
ignFrScan25: true,
2024-06-07 13:19:28 +02:00
ignFrSatellite: true,
2024-05-05 18:59:09 +02:00
},
new_zealand: {
linz: true,
linzTopo: true,
},
norway: {
norwayTopo: true,
},
spain: {
ignEs: true,
2024-10-05 17:06:17 +02:00
ignEsSatellite: true,
2024-05-05 18:59:09 +02:00
},
sweden: {
swedenTopo: true,
2024-09-03 12:45:35 +02:00
swedenSatellite: true,
2024-05-05 18:59:09 +02:00
},
switzerland: {
2024-07-18 12:45:25 +02:00
swisstopoRaster: true,
swisstopoVector: true,
2024-06-07 13:32:44 +02:00
swisstopoSatellite: true,
2024-05-05 18:59:09 +02:00
},
united_kingdom: {
ordnanceSurvey: true,
},
united_states: {
usgs: true,
},
},
2024-04-12 12:38:19 +02:00
},
};
2024-04-12 12:38:19 +02:00
2024-05-05 18:59:09 +02:00
// Hierarchy containing all overlays
2024-04-12 13:43:51 +02:00
export const overlayTree: LayerTreeType = {
overlays: {
world: {
2024-05-05 18:59:09 +02:00
waymarked_trails: {
waymarkedTrailsHiking: true,
waymarkedTrailsCycling: true,
waymarkedTrailsMTB: true,
waymarkedTrailsSkating: true,
waymarkedTrailsHorseRiding: true,
waymarkedTrailsWinter: true,
},
cyclOSMlite: true,
bikerouterGravel: true,
},
countries: {
2024-05-05 18:59:09 +02:00
france: {
ignFrCadastre: true,
ignSlope: true,
2024-06-06 12:16:07 +02:00
ignSkiTouring: true,
2024-05-05 18:59:09 +02:00
},
switzerland: {
swisstopoSlope: true,
2024-07-18 12:45:25 +02:00
swisstopoHiking: true,
swisstopoHikingClosures: true,
2024-05-05 18:59:09 +02:00
swisstopoCycling: true,
2024-07-18 12:45:25 +02:00
swisstopoCyclingClosures: true,
2024-05-05 18:59:09 +02:00
swisstopoMountainBike: true,
2024-07-18 12:45:25 +02:00
swisstopoMountainBikeClosures: true,
2024-06-06 12:52:00 +02:00
swisstopoSkiTouring: true,
},
},
2024-04-12 12:38:19 +02:00
},
};
2024-04-12 12:38:19 +02:00
2024-07-17 14:19:04 +02:00
// Hierachy containing all Overpass layers
export const overpassTree: LayerTreeType = {
points_of_interest: {
2024-07-17 19:40:53 +02:00
food: {
bakery: true,
'food-store': true,
'eat-and-drink': true,
2024-07-17 19:40:53 +02:00
},
amenities: {
toilets: true,
water: true,
2024-07-17 19:40:53 +02:00
shower: true,
2024-08-11 12:17:06 +02:00
shelter: true,
barrier: true,
2024-07-17 19:40:53 +02:00
},
tourism: {
attraction: true,
viewpoint: true,
2024-07-18 11:03:41 +02:00
hotel: true,
campsite: true,
hut: true,
2024-08-11 12:17:06 +02:00
picnic: true,
2024-07-17 19:40:53 +02:00
summit: true,
pass: true,
climbing: true,
},
bicycle: {
'bicycle-parking': true,
'bicycle-rental': true,
'bicycle-shop': true,
2024-07-17 19:40:53 +02:00
},
'public-transport': {
'railway-station': true,
'tram-stop': true,
'bus-stop': true,
ferry: true,
2024-07-17 14:19:04 +02:00
},
motorized: {
'fuel-station': true,
parking: true,
garage: true,
},
2024-07-17 14:19:04 +02:00
},
};
2024-05-05 18:59:09 +02:00
// Default basemap used
2024-04-12 12:38:19 +02:00
export const defaultBasemap = 'mapboxOutdoors';
2024-05-05 18:59:09 +02:00
// Default overlays used (none)
2024-10-14 16:42:05 +02:00
export const defaultOverlays: LayerTreeType = {
2024-05-05 18:59:09 +02:00
overlays: {
world: {
waymarked_trails: {
waymarkedTrailsHiking: false,
waymarkedTrailsCycling: false,
waymarkedTrailsMTB: false,
waymarkedTrailsSkating: false,
waymarkedTrailsHorseRiding: false,
waymarkedTrailsWinter: false,
},
cyclOSMlite: false,
bikerouterGravel: false,
2024-05-05 18:59:09 +02:00
},
countries: {
france: {
ignFrCadastre: false,
ignSlope: false,
2024-06-06 12:16:07 +02:00
ignSkiTouring: false,
2024-05-05 18:59:09 +02:00
},
switzerland: {
swisstopoSlope: false,
2024-07-18 12:45:25 +02:00
swisstopoHiking: false,
swisstopoHikingClosures: false,
2024-05-05 18:59:09 +02:00
swisstopoCycling: false,
2024-07-18 12:45:25 +02:00
swisstopoCyclingClosures: false,
2024-05-05 18:59:09 +02:00
swisstopoMountainBike: false,
2024-07-18 12:45:25 +02:00
swisstopoMountainBikeClosures: false,
2024-06-06 12:52:00 +02:00
swisstopoSkiTouring: false,
},
2024-05-05 18:59:09 +02:00
},
},
};
2024-07-17 14:19:04 +02:00
// Default Overpass queries used (none)
export const defaultOverpassQueries: LayerTreeType = {
points_of_interest: {
food: {
2024-07-17 19:40:53 +02:00
bakery: false,
'food-store': false,
'eat-and-drink': false,
2024-07-17 19:40:53 +02:00
},
amenities: {
toilets: false,
water: false,
2024-07-17 19:40:53 +02:00
shower: false,
2024-08-11 12:17:06 +02:00
shelter: false,
barrier: false,
2024-07-17 19:40:53 +02:00
},
tourism: {
attraction: false,
viewpoint: false,
2024-07-18 11:03:41 +02:00
hotel: false,
campsite: false,
hut: false,
2024-08-11 12:17:06 +02:00
picnic: false,
2024-07-17 19:40:53 +02:00
summit: false,
pass: false,
climbing: false,
2024-07-17 19:40:53 +02:00
},
bicycle: {
'bicycle-parking': false,
'bicycle-rental': false,
'bicycle-shop': false,
2024-07-17 19:40:53 +02:00
},
'public-transport': {
'railway-station': false,
'tram-stop': false,
'bus-stop': false,
ferry: false,
2024-07-17 14:19:04 +02:00
},
motorized: {
'fuel-station': false,
parking: false,
garage: false,
},
2024-07-17 14:19:04 +02:00
},
};
2024-05-05 18:59:09 +02:00
// Default basemaps shown in the layer menu
2024-05-04 23:50:27 +02:00
export const defaultBasemapTree: LayerTreeType = {
basemaps: {
2024-05-05 18:59:09 +02:00
world: {
mapboxOutdoors: true,
mapboxSatellite: true,
openStreetMap: true,
openTopoMap: true,
openHikingMap: true,
cyclOSM: true,
2024-05-05 18:59:09 +02:00
},
countries: {
2024-06-09 16:53:04 +02:00
belgium: {
ignBe: false,
},
2024-05-05 18:59:09 +02:00
bulgaria: {
bgMountains: false,
},
finland: {
finlandTopo: false,
},
france: {
2024-06-07 13:19:28 +02:00
ignFrPlan: false,
2024-07-24 12:09:45 +02:00
ignFrTopo: false,
2024-05-05 18:59:09 +02:00
ignFrScan25: false,
2024-06-07 13:19:28 +02:00
ignFrSatellite: false,
2024-05-05 18:59:09 +02:00
},
new_zealand: {
linz: false,
linzTopo: false,
},
norway: {
norwayTopo: false,
},
spain: {
ignEs: false,
2024-10-05 17:06:17 +02:00
ignEsSatellite: false,
2024-05-05 18:59:09 +02:00
},
sweden: {
swedenTopo: false,
2024-09-03 12:45:35 +02:00
swedenSatellite: false,
2024-05-05 18:59:09 +02:00
},
switzerland: {
2024-07-18 12:45:25 +02:00
swisstopoRaster: false,
swisstopoVector: false,
2024-06-07 13:32:44 +02:00
swisstopoSatellite: false,
2024-05-05 18:59:09 +02:00
},
united_kingdom: {
ordnanceSurvey: false,
},
united_states: {
usgs: false,
},
2024-05-05 18:59:09 +02:00
},
},
2024-05-04 23:50:27 +02:00
};
2024-05-05 18:59:09 +02:00
// Default overlays shown in the layer menu
2024-05-04 23:50:27 +02:00
export const defaultOverlayTree: LayerTreeType = {
overlays: {
world: {
2024-05-05 18:59:09 +02:00
waymarked_trails: {
waymarkedTrailsHiking: true,
waymarkedTrailsCycling: true,
waymarkedTrailsMTB: true,
waymarkedTrailsSkating: false,
waymarkedTrailsHorseRiding: false,
waymarkedTrailsWinter: false,
},
cyclOSMlite: false,
bikerouterGravel: false,
2024-05-05 18:59:09 +02:00
},
countries: {
france: {
ignFrCadastre: false,
ignSlope: false,
2024-06-06 12:16:07 +02:00
ignSkiTouring: false,
2024-05-05 18:59:09 +02:00
},
switzerland: {
swisstopoSlope: false,
2024-07-18 12:45:25 +02:00
swisstopoHiking: false,
swisstopoHikingClosures: false,
2024-05-05 18:59:09 +02:00
swisstopoCycling: false,
2024-07-18 12:45:25 +02:00
swisstopoCyclingClosures: false,
2024-05-05 18:59:09 +02:00
swisstopoMountainBike: false,
2024-07-18 12:45:25 +02:00
swisstopoMountainBikeClosures: false,
2024-06-06 12:52:00 +02:00
swisstopoSkiTouring: false,
},
2024-05-05 18:59:09 +02:00
},
},
};
2024-06-06 18:11:03 +02:00
2024-07-17 14:19:04 +02:00
// Default Overpass queries shown in the layer menu
export const defaultOverpassTree: LayerTreeType = {
points_of_interest: {
food: {
2024-07-17 19:40:53 +02:00
bakery: true,
'food-store': true,
'eat-and-drink': true,
2024-07-17 19:40:53 +02:00
},
amenities: {
toilets: true,
water: true,
2024-07-17 23:05:17 +02:00
shower: false,
2024-08-11 12:17:06 +02:00
shelter: false,
barrier: false,
2024-07-17 19:40:53 +02:00
},
tourism: {
2024-07-17 23:05:17 +02:00
attraction: false,
viewpoint: false,
2024-07-18 11:03:41 +02:00
hotel: true,
campsite: true,
hut: true,
2024-08-11 12:17:06 +02:00
picnic: false,
2024-07-17 19:40:53 +02:00
summit: true,
pass: true,
climbing: false,
2024-07-17 19:40:53 +02:00
},
bicycle: {
'bicycle-parking': false,
'bicycle-rental': false,
'bicycle-shop': true,
2024-07-17 19:40:53 +02:00
},
'public-transport': {
'railway-station': true,
'tram-stop': true,
'bus-stop': true,
ferry: false,
2024-07-17 14:19:04 +02:00
},
motorized: {
'fuel-station': false,
parking: false,
garage: false,
},
2024-07-17 14:19:04 +02:00
},
};
2024-06-26 17:19:41 +02:00
export type CustomLayer = {
id: string;
name: string;
tileUrls: string[];
maxZoom: number;
layerType: 'basemap' | 'overlay';
resourceType: 'raster' | 'vector';
value: string | {};
2024-06-26 17:19:41 +02:00
};
2024-07-17 19:40:53 +02:00
type OverpassQueryData = {
icon: {
svg: string;
color: string;
};
tags:
| Record<string, string | boolean | string[]>
| Record<string, string | boolean | string[]>[];
symbol?: string;
2024-07-17 14:19:04 +02:00
};
2024-07-17 19:40:53 +02:00
export const overpassQueryData: Record<string, OverpassQueryData> = {
2024-08-08 17:52:11 +02:00
bakery: {
2024-07-17 19:40:53 +02:00
icon: {
svg: Croissant,
color: 'Coral',
2024-07-17 19:40:53 +02:00
},
tags: {
shop: 'bakery',
2024-08-11 13:47:10 +02:00
},
symbol: 'Convenience Store',
2024-07-17 19:40:53 +02:00
},
'food-store': {
2024-07-17 19:40:53 +02:00
icon: {
svg: ShoppingBasket,
color: 'Coral',
2024-07-17 19:40:53 +02:00
},
tags: {
shop: ['supermarket', 'convenience'],
2024-08-08 17:52:11 +02:00
},
symbol: 'Convenience Store',
2024-07-17 19:40:53 +02:00
},
'eat-and-drink': {
2024-07-17 19:40:53 +02:00
icon: {
svg: Utensils,
color: 'Coral',
2024-07-17 19:40:53 +02:00
},
tags: {
amenity: ['restaurant', 'fast_food', 'cafe', 'pub', 'bar'],
2024-08-08 17:52:11 +02:00
},
symbol: 'Restaurant',
2024-07-17 19:40:53 +02:00
},
2024-08-08 17:52:11 +02:00
toilets: {
2024-07-17 19:40:53 +02:00
icon: {
2024-11-18 21:08:30 +01:00
svg: Toilet,
color: 'DeepSkyBlue',
2024-07-17 19:40:53 +02:00
},
tags: {
amenity: 'toilets',
2024-08-08 17:52:11 +02:00
},
symbol: 'Restroom',
2024-07-17 19:40:53 +02:00
},
water: {
icon: {
svg: Droplet,
color: 'DeepSkyBlue',
2024-07-17 19:40:53 +02:00
},
tags: [
{
amenity: ['drinking_water', 'water_point'],
},
{
natural: 'spring',
drinking_water: 'yes',
},
],
symbol: 'Drinking Water',
2024-07-17 19:40:53 +02:00
},
shower: {
icon: {
svg: ShowerHead,
color: 'DeepSkyBlue',
2024-07-17 19:40:53 +02:00
},
tags: {
amenity: 'shower',
2024-08-08 17:52:11 +02:00
},
symbol: 'Shower',
2024-07-17 19:40:53 +02:00
},
2024-08-11 12:17:06 +02:00
shelter: {
icon: {
2024-08-11 13:47:10 +02:00
svg: Tent,
color: '#000000',
2024-08-11 12:17:06 +02:00
},
tags: {
amenity: 'shelter',
2024-08-11 12:17:06 +02:00
},
symbol: 'Shelter',
2024-08-11 12:17:06 +02:00
},
'fuel-station': {
2024-07-17 19:40:53 +02:00
icon: {
svg: Fuel,
color: '#000000',
2024-07-17 19:40:53 +02:00
},
tags: {
amenity: 'fuel',
2024-08-08 17:52:11 +02:00
},
symbol: 'Gas Station',
2024-07-17 19:40:53 +02:00
},
parking: {
icon: {
svg: CircleParking,
color: '#000000',
2024-07-17 19:40:53 +02:00
},
tags: {
amenity: 'parking',
2024-08-08 17:52:11 +02:00
},
symbol: 'Parking Area',
2024-07-17 19:40:53 +02:00
},
garage: {
icon: {
svg: Wrench,
color: '#000000',
},
tags: {
shop: ['car_repair', 'motorcycle_repair'],
2024-08-08 17:52:11 +02:00
},
symbol: 'Car Repair',
},
2024-07-17 19:40:53 +02:00
barrier: {
icon: {
svg: Fence,
color: '#000000',
2024-07-17 19:40:53 +02:00
},
tags: {
barrier: true,
},
2024-07-17 19:40:53 +02:00
},
attraction: {
icon: {
svg: FerrisWheel,
color: 'Green',
2024-07-17 19:40:53 +02:00
},
tags: {
tourism: 'attraction',
},
2024-07-17 19:40:53 +02:00
},
viewpoint: {
icon: {
2024-08-11 13:47:10 +02:00
svg: Binoculars,
color: 'Green',
2024-07-17 19:40:53 +02:00
},
tags: {
tourism: 'viewpoint',
2024-08-08 17:52:11 +02:00
},
symbol: 'Scenic Area',
2024-07-17 19:40:53 +02:00
},
2024-07-18 11:03:41 +02:00
hotel: {
2024-07-17 19:40:53 +02:00
icon: {
svg: Bed,
color: '#e6c100',
2024-07-17 19:40:53 +02:00
},
tags: {
tourism: ['hotel', 'hostel', 'guest_house', 'motel'],
2024-08-08 17:52:11 +02:00
},
symbol: 'Hotel',
2024-07-18 11:03:41 +02:00
},
campsite: {
icon: {
svg: Tent,
color: '#e6c100',
2024-07-18 11:03:41 +02:00
},
tags: {
tourism: 'camp_site',
2024-08-08 17:52:11 +02:00
},
symbol: 'Campground',
2024-07-18 11:03:41 +02:00
},
hut: {
icon: {
svg: House,
color: '#e6c100',
2024-07-18 11:03:41 +02:00
},
tags: {
tourism: ['alpine_hut', 'wilderness_hut'],
2024-08-08 17:52:11 +02:00
},
symbol: 'Lodge',
2024-07-17 19:40:53 +02:00
},
2024-08-11 12:17:06 +02:00
picnic: {
icon: {
svg: Utensils,
color: 'Green',
2024-08-11 12:17:06 +02:00
},
tags: {
tourism: 'picnic_site',
2024-08-11 12:17:06 +02:00
},
symbol: 'Picnic Area',
2024-08-11 12:17:06 +02:00
},
2024-07-17 19:40:53 +02:00
summit: {
icon: {
svg: Mountain,
color: 'Green',
2024-07-17 19:40:53 +02:00
},
tags: {
natural: 'peak',
2024-08-08 17:52:11 +02:00
},
symbol: 'Summit',
2024-07-17 19:40:53 +02:00
},
pass: {
icon: {
svg: Mountain,
color: 'Green',
2024-07-17 19:40:53 +02:00
},
tags: {
mountain_pass: 'yes',
},
2024-07-17 19:40:53 +02:00
},
climbing: {
icon: {
svg: Pickaxe,
color: 'Green',
2024-07-17 19:40:53 +02:00
},
tags: {
sport: 'climbing',
},
2024-07-17 19:40:53 +02:00
},
'bicycle-parking': {
2024-07-17 19:40:53 +02:00
icon: {
svg: CircleParking,
color: 'HotPink',
2024-07-17 19:40:53 +02:00
},
tags: {
amenity: 'bicycle_parking',
2024-08-08 17:52:11 +02:00
},
symbol: 'Parking Area',
2024-07-17 19:40:53 +02:00
},
'bicycle-rental': {
2024-07-17 19:40:53 +02:00
icon: {
svg: Store,
color: 'HotPink',
2024-07-17 19:40:53 +02:00
},
tags: {
amenity: 'bicycle_rental',
},
2024-07-17 19:40:53 +02:00
},
'bicycle-shop': {
2024-07-17 19:40:53 +02:00
icon: {
svg: Store,
color: 'HotPink',
2024-07-17 19:40:53 +02:00
},
tags: {
shop: 'bicycle',
},
2024-07-17 19:40:53 +02:00
},
'railway-station': {
2024-07-17 19:40:53 +02:00
icon: {
svg: TrainFront,
color: 'DarkBlue',
2024-07-17 19:40:53 +02:00
},
tags: {
railway: 'station',
2024-08-08 17:52:11 +02:00
},
symbol: 'Ground Transportation',
2024-07-17 19:40:53 +02:00
},
'tram-stop': {
2024-07-17 19:40:53 +02:00
icon: {
svg: TramFront,
color: 'DarkBlue',
},
tags: {
railway: 'tram_stop',
2024-07-17 19:40:53 +02:00
},
symbol: 'Ground Transportation',
2024-07-17 19:40:53 +02:00
},
'bus-stop': {
2024-07-17 19:40:53 +02:00
icon: {
svg: Bus,
color: 'DarkBlue',
2024-07-17 19:40:53 +02:00
},
tags: {
public_transport: ['stop_position', 'platform'],
bus: 'yes',
2024-08-08 17:52:11 +02:00
},
symbol: 'Ground Transportation',
2024-07-17 19:40:53 +02:00
},
ferry: {
icon: {
svg: Ship,
color: 'DarkBlue',
2024-07-17 19:40:53 +02:00
},
tags: {
amenity: 'ferry_terminal',
2024-08-11 13:47:10 +02:00
},
symbol: 'Anchor',
},
};