kopia lustrzana https://github.com/manuelkasper/sotlas-frontend
Porównaj commity
9 Commity
ba04fdc2c9
...
0434400726
Autor | SHA1 | Data |
---|---|---|
Manuel Kasper | 0434400726 | |
Manuel Kasper | 0c6d6f52c7 | |
Manuel Kasper | a978ab19ba | |
Manuel Kasper | d458738639 | |
Manuel Kasper | 4f94f6ad45 | |
Manuel Kasper | f4c6263f89 | |
Manuel Kasper | f390f247a0 | |
Manuel Kasper | 9043e35fda | |
Manuel Kasper | 5c1c82d3ad |
|
@ -0,0 +1,385 @@
|
|||
{
|
||||
"version": 8,
|
||||
"name": "basemapat",
|
||||
"metadata": {"maputnik:renderer": "mbgljs", "openmaptiles:version": "3.x"},
|
||||
"center": [13.1411895, 47.698321],
|
||||
"zoom": 6,
|
||||
"bearing": 0,
|
||||
"pitch": 0,
|
||||
"sources": {
|
||||
"basemapat": {
|
||||
"type": "raster",
|
||||
"tiles": [
|
||||
"https://mapsneu.wien.gv.at/basemap/bmaphidpi/normal/google3857/{z}/{y}/{x}.jpeg"
|
||||
],
|
||||
"tileSize": 256,
|
||||
"maxzoom": 18,
|
||||
"bounds": [8.782379, 46.358770, 17.5, 49.037872],
|
||||
"attribution": "Grundkarte: <a target=\"_blank\" href=\"https://basemap.at/\">basemap.at</a>"
|
||||
},
|
||||
"summits": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/summits.json"
|
||||
},
|
||||
"summits_inactive": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/summits_inactive.json"
|
||||
},
|
||||
"regions": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/regions.json"
|
||||
},
|
||||
"az": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/az.json"
|
||||
},
|
||||
"openmaptiles": {
|
||||
"type": "vector",
|
||||
"url": "https://0.{mapServer}.map.sotl.as/data/osm-sotlas.json"
|
||||
}
|
||||
},
|
||||
"sprite": "https://sotl.as/sprites",
|
||||
"glyphs": "https://0.{mapServer}.map.sotl.as/fonts/{fontstack}/{range}.pbf",
|
||||
"transition": {},
|
||||
"layers": [
|
||||
{
|
||||
"id": "background",
|
||||
"type": "background",
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {"background-color": "rgba(255, 255, 255, 1)"}
|
||||
},
|
||||
{
|
||||
"id": "water",
|
||||
"type": "fill",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "water",
|
||||
"filter": ["all"],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {"fill-color": "rgba(103, 166, 196, 0.2)"}
|
||||
},
|
||||
{
|
||||
"id": "boundary_2",
|
||||
"type": "line",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "boundary",
|
||||
"filter": ["all", ["==", "admin_level", 2], ["==", "maritime", 0]],
|
||||
"layout": {
|
||||
"line-cap": "round",
|
||||
"line-join": "round",
|
||||
"visibility": "visible"
|
||||
},
|
||||
"paint": {
|
||||
"line-color": "rgba(136, 136, 136, 1)",
|
||||
"line-opacity": 0.2,
|
||||
"line-width": {"base": 1, "stops": [[3, 1], [5, 1.2], [12, 3]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "basemapat",
|
||||
"type": "raster",
|
||||
"source": "basemapat",
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {
|
||||
"raster-opacity": 0.75,
|
||||
"raster-resampling": "linear"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_az",
|
||||
"type": "fill",
|
||||
"metadata": {
|
||||
"sotlas-map-option": "az"
|
||||
},
|
||||
"source": "az",
|
||||
"source-layer": "az",
|
||||
"layout": {"visibility": "none"},
|
||||
"minzoom": 12,
|
||||
"paint": {
|
||||
"fill-antialias": false,
|
||||
"fill-color": "rgba(255, 255, 0, 1)",
|
||||
"fill-opacity": {"stops": [[12, 0], [12.5, 0.5]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_az_border",
|
||||
"type": "line",
|
||||
"metadata": {
|
||||
"sotlas-map-option": "az"
|
||||
},
|
||||
"source": "az",
|
||||
"source-layer": "az",
|
||||
"layout": {"visibility": "none"},
|
||||
"minzoom": 12,
|
||||
"paint": {
|
||||
"line-color": "rgba(235, 196, 0, 1)",
|
||||
"line-opacity": {"stops": [[12, 0], [12.5, 0.5]]},
|
||||
"line-width": {"stops": [[12, 1], [16, 3]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_selected",
|
||||
"type": "circle",
|
||||
"source": "summits",
|
||||
"source-layer": "summits",
|
||||
"filter": ["all", ["in", "code"]],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {
|
||||
"circle-color": "rgba(2, 153, 243, 1)",
|
||||
"circle-radius": {"stops": [[6, 15], [20, 50]]},
|
||||
"circle-opacity": 0.75,
|
||||
"circle-stroke-color": "rgba(210, 255, 0, 0.05)",
|
||||
"circle-stroke-width": 0,
|
||||
"circle-stroke-opacity": 1,
|
||||
"circle-blur": 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_names",
|
||||
"type": "symbol",
|
||||
"source": "summits",
|
||||
"source-layer": "summits",
|
||||
"minzoom": 10,
|
||||
"maxzoom": 24,
|
||||
"filter": ["all", ["in", "code"]],
|
||||
"layout": {
|
||||
"visibility": "visible",
|
||||
"text-field": "{name}\n{code}\n{alt} m",
|
||||
"text-size": {"stops": [[10, 10], [20, 16]]},
|
||||
"text-font": ["Frutiger Neue Regular"],
|
||||
"text-anchor": "bottom",
|
||||
"text-offset": {"stops": [[10, [0, -1]], [20, [0, -2]]]},
|
||||
"icon-size": 1,
|
||||
"symbol-spacing": 250,
|
||||
"symbol-avoid-edges": false,
|
||||
"text-keep-upright": true,
|
||||
"text-transform": "none",
|
||||
"text-optional": false,
|
||||
"text-allow-overlap": {"stops": [[18, false], [19, true]]},
|
||||
"text-ignore-placement": false,
|
||||
"text-justify": "center",
|
||||
"text-rotate": 0
|
||||
},
|
||||
"paint": {
|
||||
"text-color": "rgba(51, 51, 51, 1)",
|
||||
"text-halo-color": "rgba(255, 255, 255, 1)",
|
||||
"text-halo-width": 1,
|
||||
"text-halo-blur": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_circles_all",
|
||||
"type": "circle",
|
||||
"source": "summits",
|
||||
"source-layer": "summits",
|
||||
"layout": {"visibility": "none"},
|
||||
"paint": {
|
||||
"circle-stroke-color": "rgba(255, 255, 255, 1)",
|
||||
"circle-color": [
|
||||
"match",
|
||||
["get", "points"],
|
||||
[1],
|
||||
"rgba(77, 122, 32, 0.5)",
|
||||
[2],
|
||||
"rgba(109, 165, 54, 0.5)",
|
||||
[4],
|
||||
"rgba(174, 167, 39, 0.5)",
|
||||
[6],
|
||||
"rgba(239, 168, 24, 0.5)",
|
||||
[8],
|
||||
"rgba(220, 93, 4, 0.5)",
|
||||
[10],
|
||||
"rgba(200, 16, 30, 0.5)",
|
||||
"#000"
|
||||
],
|
||||
"circle-stroke-width": {"stops": [[4, 0], [15, 1]]},
|
||||
"circle-radius": {"stops": [[0, 0.05], [10, 2.5], [22, 12]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_circles",
|
||||
"type": "circle",
|
||||
"source": "summits",
|
||||
"source-layer": "summits",
|
||||
"filter": ["all", ["in", "code"]],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {
|
||||
"circle-stroke-color": "rgba(255, 255, 255, 1)",
|
||||
"circle-color": [
|
||||
"match",
|
||||
["get", "points"],
|
||||
[1],
|
||||
"rgba(77, 122, 32, 1)",
|
||||
[2],
|
||||
"rgba(109, 165, 54, 1)",
|
||||
[4],
|
||||
"rgba(174, 167, 39, 1)",
|
||||
[6],
|
||||
"rgba(239, 168, 24, 1)",
|
||||
[8],
|
||||
"rgba(220, 93, 4, 1)",
|
||||
[10],
|
||||
"rgba(200, 16, 30, 1)",
|
||||
"#000"
|
||||
],
|
||||
"circle-stroke-width": {"stops": [[4, 0], [15, 2]]},
|
||||
"circle-radius": {"stops": [[0, 0.1], [10, 8], [22, 20]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_activations",
|
||||
"type": "symbol",
|
||||
"source": "summits",
|
||||
"source-layer": "summits",
|
||||
"minzoom": 10,
|
||||
"maxzoom": 24,
|
||||
"filter": ["all", ["in", "code"]],
|
||||
"layout": {
|
||||
"text-field": "{act}",
|
||||
"text-font": ["Frutiger Neue Bold"],
|
||||
"text-size": {"stops": [[10, 8], [20, 16]]},
|
||||
"text-offset": [0,0.1]
|
||||
},
|
||||
"paint": {"text-color": "rgba(255, 255, 255, 1)"}
|
||||
},
|
||||
{
|
||||
"id": "summits_highlight",
|
||||
"type": "circle",
|
||||
"source": "summits",
|
||||
"source-layer": "summits",
|
||||
"filter": ["all", ["in", "code"]],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {
|
||||
"circle-color": "rgba(2, 243, 198, 1)",
|
||||
"circle-radius": {"stops": [[6, 15], [20, 50]]},
|
||||
"circle-opacity": 0.75,
|
||||
"circle-blur": 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_highlight_alerts",
|
||||
"type": "circle",
|
||||
"source": "summits",
|
||||
"source-layer": "summits",
|
||||
"filter": ["all", ["in", "code"]],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {
|
||||
"circle-color": "rgba(210, 255, 0, 1)",
|
||||
"circle-radius": {"stops": [[6, 15], [20, 50]]},
|
||||
"circle-opacity": 0.55,
|
||||
"circle-blur": 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_inactive_names",
|
||||
"type": "symbol",
|
||||
"metadata": {
|
||||
"sotlas-map-option": "inactive"
|
||||
},
|
||||
"source": "summits_inactive",
|
||||
"source-layer": "summits_inactive",
|
||||
"minzoom": 10,
|
||||
"maxzoom": 24,
|
||||
"filter": ["all", ["in", "code"]],
|
||||
"layout": {
|
||||
"visibility": "none",
|
||||
"text-field": "{name}\n{code}\n{alt} m\n(inactive)",
|
||||
"text-size": {"stops": [[10, 10], [20, 16]]},
|
||||
"text-font": ["Frutiger Neue Regular"],
|
||||
"text-anchor": "bottom",
|
||||
"text-offset": {"stops": [[10, [0, -1]], [20, [0, -2]]]},
|
||||
"icon-size": 1,
|
||||
"symbol-spacing": 250,
|
||||
"symbol-avoid-edges": false,
|
||||
"text-keep-upright": true,
|
||||
"text-transform": "none",
|
||||
"text-optional": false,
|
||||
"text-allow-overlap": {"stops": [[18, false], [19, true]]},
|
||||
"text-ignore-placement": false,
|
||||
"text-justify": "center",
|
||||
"text-rotate": 0
|
||||
},
|
||||
"paint": {
|
||||
"text-color": "rgba(51, 51, 51, 1)",
|
||||
"text-halo-color": "rgba(255, 255, 255, 1)",
|
||||
"text-halo-width": 1,
|
||||
"text-halo-blur": 1,
|
||||
"text-opacity": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "summits_inactive_circles",
|
||||
"type": "circle",
|
||||
"metadata": {
|
||||
"sotlas-map-option": "inactive"
|
||||
},
|
||||
"source": "summits_inactive",
|
||||
"source-layer": "summits_inactive",
|
||||
"filter": ["all", ["in", "code"]],
|
||||
"layout": {"visibility": "none"},
|
||||
"paint": {
|
||||
"circle-stroke-color": "rgba(255, 255, 255, 1)",
|
||||
"circle-color": [
|
||||
"match",
|
||||
["get", "points"],
|
||||
[1],
|
||||
"rgba(77, 122, 32, 0.5)",
|
||||
[2],
|
||||
"rgba(109, 165, 54, 0.5)",
|
||||
[4],
|
||||
"rgba(174, 167, 39, 0.5)",
|
||||
[6],
|
||||
"rgba(239, 168, 24, 0.5)",
|
||||
[8],
|
||||
"rgba(220, 93, 4, 0.5)",
|
||||
[10],
|
||||
"rgba(200, 16, 30, 0.5)",
|
||||
"#000"
|
||||
],
|
||||
"circle-stroke-width": {"stops": [[4, 0], [15, 2]]},
|
||||
"circle-radius": {"stops": [[0, 0.1], [10, 8], [22, 20]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "regions_areas",
|
||||
"type": "fill",
|
||||
"metadata": {
|
||||
"sotlas-map-option": "regions"
|
||||
},
|
||||
"source": "regions",
|
||||
"source-layer": "areas",
|
||||
"minzoom": 0,
|
||||
"layout": {"visibility": "none"},
|
||||
"paint": {
|
||||
"fill-opacity": 0.1,
|
||||
"fill-antialias": false,
|
||||
"fill-color": "rgba(0, 0, 0, 1)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "regions_labels",
|
||||
"type": "symbol",
|
||||
"metadata": {
|
||||
"sotlas-map-option": "regions"
|
||||
},
|
||||
"source": "regions",
|
||||
"source-layer": "labels",
|
||||
"layout": {
|
||||
"visibility": "none",
|
||||
"text-field": "{region}",
|
||||
"text-anchor": "top-left",
|
||||
"text-justify": "center",
|
||||
"text-offset": [0.3, 0.3],
|
||||
"text-font": ["Frutiger Neue Regular"],
|
||||
"text-size": {"stops": [[6, 8], [10, 16]]}
|
||||
},
|
||||
"paint": {
|
||||
"text-halo-color": "rgba(255, 255, 255, 1)",
|
||||
"text-halo-width": 0.5,
|
||||
"text-halo-blur": 1,
|
||||
"text-translate": [0, 0]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -32,6 +32,10 @@
|
|||
"az": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/az.json"
|
||||
},
|
||||
"openmaptiles": {
|
||||
"type": "vector",
|
||||
"url": "https://0.{mapServer}.map.sotl.as/data/osm-sotlas.json"
|
||||
}
|
||||
},
|
||||
"sprite": "https://sotl.as/sprites",
|
||||
|
@ -44,6 +48,34 @@
|
|||
"layout": {"visibility": "visible"},
|
||||
"paint": {"background-color": "rgba(255, 255, 255, 1)"}
|
||||
},
|
||||
{
|
||||
"id": "water",
|
||||
"type": "fill",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "water",
|
||||
"filter": ["all"],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {"fill-color": "rgba(103, 166, 196, 0.2)"}
|
||||
},
|
||||
{
|
||||
"id": "boundary_2",
|
||||
"type": "line",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "boundary",
|
||||
"filter": ["all", ["==", "admin_level", 2], ["==", "maritime", 0]],
|
||||
"layout": {
|
||||
"line-cap": "round",
|
||||
"line-join": "round",
|
||||
"visibility": "visible"
|
||||
},
|
||||
"paint": {
|
||||
"line-color": "rgba(136, 136, 136, 1)",
|
||||
"line-opacity": 0.2,
|
||||
"line-width": {"base": 1, "stops": [[3, 1], [5, 1.2], [12, 3]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "caltopo",
|
||||
"type": "raster",
|
||||
|
|
|
@ -32,6 +32,10 @@
|
|||
"az": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/az.json"
|
||||
},
|
||||
"openmaptiles": {
|
||||
"type": "vector",
|
||||
"url": "https://0.{mapServer}.map.sotl.as/data/osm-sotlas.json"
|
||||
}
|
||||
},
|
||||
"sprite": "https://sotl.as/sprites",
|
||||
|
@ -44,6 +48,34 @@
|
|||
"layout": {"visibility": "visible"},
|
||||
"paint": {"background-color": "rgba(255, 255, 255, 1)"}
|
||||
},
|
||||
{
|
||||
"id": "water",
|
||||
"type": "fill",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "water",
|
||||
"filter": ["all"],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {"fill-color": "rgba(103, 166, 196, 0.2)"}
|
||||
},
|
||||
{
|
||||
"id": "boundary_2",
|
||||
"type": "line",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "boundary",
|
||||
"filter": ["all", ["==", "admin_level", 2], ["==", "maritime", 0]],
|
||||
"layout": {
|
||||
"line-cap": "round",
|
||||
"line-join": "round",
|
||||
"visibility": "visible"
|
||||
},
|
||||
"paint": {
|
||||
"line-color": "rgba(136, 136, 136, 1)",
|
||||
"line-opacity": 0.2,
|
||||
"line-width": {"base": 1, "stops": [[3, 1], [5, 1.2], [12, 3]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "norkart",
|
||||
"type": "raster",
|
||||
|
|
|
@ -89,6 +89,10 @@
|
|||
"az": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/az.json"
|
||||
},
|
||||
"openmaptiles": {
|
||||
"type": "vector",
|
||||
"url": "https://0.{mapServer}.map.sotl.as/data/osm-sotlas.json"
|
||||
}
|
||||
},
|
||||
"sprite": "https://vectortiles.geo.admin.ch/styles/ch.swisstopo.leichte-basiskarte.vt/sprite/sprite",
|
||||
|
@ -105,6 +109,34 @@
|
|||
"background-color": "rgba(255, 255, 255, 1)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "water",
|
||||
"type": "fill",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "water",
|
||||
"filter": ["all"],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {"fill-color": "rgba(103, 166, 196, 0.2)"}
|
||||
},
|
||||
{
|
||||
"id": "boundary_2",
|
||||
"type": "line",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "boundary",
|
||||
"filter": ["all", ["==", "admin_level", 2], ["==", "maritime", 0]],
|
||||
"layout": {
|
||||
"line-cap": "round",
|
||||
"line-join": "round",
|
||||
"visibility": "visible"
|
||||
},
|
||||
"paint": {
|
||||
"line-color": "rgba(136, 136, 136, 1)",
|
||||
"line-opacity": 0.2,
|
||||
"line-width": {"base": 1, "stops": [[3, 1], [5, 1.2], [12, 3]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "relief_shading",
|
||||
"type": "raster",
|
||||
|
|
|
@ -86,6 +86,10 @@
|
|||
"az": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/az.json"
|
||||
},
|
||||
"openmaptiles": {
|
||||
"type": "vector",
|
||||
"url": "https://0.{mapServer}.map.sotl.as/data/osm-sotlas.json"
|
||||
}
|
||||
},
|
||||
"sprite": "https://vectortiles.geo.admin.ch/styles/ch.swisstopo.leichte-basiskarte.vt/sprite/sprite",
|
||||
|
@ -98,6 +102,34 @@
|
|||
"layout": {"visibility": "visible"},
|
||||
"paint": {"background-color": "rgba(255, 255, 255, 1)"}
|
||||
},
|
||||
{
|
||||
"id": "water",
|
||||
"type": "fill",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "water",
|
||||
"filter": ["all"],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {"fill-color": "rgba(103, 166, 196, 0.2)"}
|
||||
},
|
||||
{
|
||||
"id": "boundary_2",
|
||||
"type": "line",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "boundary",
|
||||
"filter": ["all", ["==", "admin_level", 2], ["==", "maritime", 0]],
|
||||
"layout": {
|
||||
"line-cap": "round",
|
||||
"line-join": "round",
|
||||
"visibility": "visible"
|
||||
},
|
||||
"paint": {
|
||||
"line-color": "rgba(136, 136, 136, 1)",
|
||||
"line-opacity": 0.2,
|
||||
"line-width": {"base": 1, "stops": [[3, 1], [5, 1.2], [12, 3]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "swisstopo",
|
||||
"type": "raster",
|
||||
|
|
|
@ -86,6 +86,10 @@
|
|||
"az": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/az.json"
|
||||
},
|
||||
"openmaptiles": {
|
||||
"type": "vector",
|
||||
"url": "https://0.{mapServer}.map.sotl.as/data/osm-sotlas.json"
|
||||
}
|
||||
},
|
||||
"sprite": "https://vectortiles.geo.admin.ch/styles/ch.swisstopo.leichte-basiskarte.vt/sprite/sprite",
|
||||
|
@ -98,6 +102,34 @@
|
|||
"layout": {"visibility": "visible"},
|
||||
"paint": {"background-color": "rgba(255, 255, 255, 1)"}
|
||||
},
|
||||
{
|
||||
"id": "water",
|
||||
"type": "fill",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "water",
|
||||
"filter": ["all"],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {"fill-color": "rgba(103, 166, 196, 0.2)"}
|
||||
},
|
||||
{
|
||||
"id": "boundary_2",
|
||||
"type": "line",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "boundary",
|
||||
"filter": ["all", ["==", "admin_level", 2], ["==", "maritime", 0]],
|
||||
"layout": {
|
||||
"line-cap": "round",
|
||||
"line-join": "round",
|
||||
"visibility": "visible"
|
||||
},
|
||||
"paint": {
|
||||
"line-color": "rgba(136, 136, 136, 1)",
|
||||
"line-opacity": 0.2,
|
||||
"line-width": {"base": 1, "stops": [[3, 1], [5, 1.2], [12, 3]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "swisstopo",
|
||||
"type": "raster",
|
||||
|
@ -265,7 +297,7 @@
|
|||
"paint": {
|
||||
"text-color": "rgba(51, 51, 51, 1)",
|
||||
"text-halo-color": "rgba(255, 255, 255, 1)",
|
||||
"text-halo-width": 1,
|
||||
"text-halo-width": 1.5,
|
||||
"text-halo-blur": 1
|
||||
}
|
||||
},
|
||||
|
|
|
@ -32,6 +32,10 @@
|
|||
"az": {
|
||||
"type": "vector",
|
||||
"url": "https://1.{mapServer}.map.sotl.as/data/az.json"
|
||||
},
|
||||
"openmaptiles": {
|
||||
"type": "vector",
|
||||
"url": "https://0.{mapServer}.map.sotl.as/data/osm-sotlas.json"
|
||||
}
|
||||
},
|
||||
"sprite": "https://sotl.as/sprites",
|
||||
|
@ -44,6 +48,34 @@
|
|||
"layout": {"visibility": "visible"},
|
||||
"paint": {"background-color": "rgba(255, 255, 255, 1)"}
|
||||
},
|
||||
{
|
||||
"id": "water",
|
||||
"type": "fill",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "water",
|
||||
"filter": ["all"],
|
||||
"layout": {"visibility": "visible"},
|
||||
"paint": {"fill-color": "rgba(103, 166, 196, 0.2)"}
|
||||
},
|
||||
{
|
||||
"id": "boundary_2",
|
||||
"type": "line",
|
||||
"metadata": {},
|
||||
"source": "openmaptiles",
|
||||
"source-layer": "boundary",
|
||||
"filter": ["all", ["==", "admin_level", 2], ["==", "maritime", 0]],
|
||||
"layout": {
|
||||
"line-cap": "round",
|
||||
"line-join": "round",
|
||||
"visibility": "visible"
|
||||
},
|
||||
"paint": {
|
||||
"line-color": "rgba(136, 136, 136, 1)",
|
||||
"line-opacity": 0.2,
|
||||
"line-width": {"base": 1, "stops": [[3, 1], [5, 1.2], [12, 3]]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "toposvalbard",
|
||||
"type": "raster",
|
||||
|
|
|
@ -245,6 +245,14 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'Austrian Map',
|
||||
url: () => {
|
||||
if (this.reference && this.reference.match('^OE/')) {
|
||||
return `https://maps.bev.gv.at/#/center/${this.longitude},${this.latitude}/zoom/13`
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'Basemap.at',
|
||||
url: () => {
|
||||
|
|
|
@ -28,9 +28,12 @@
|
|||
</b-checkbox>
|
||||
</b-field>
|
||||
</div>
|
||||
<div class="map-option" v-if="mapType !== 'toposvalbard' && mapType !== 'norkart' && mapType !== 'caltopo'">
|
||||
<div class="map-option" v-if="mapType !== 'toposvalbard' && mapType !== 'norkart' && mapType !== 'caltopo' && mapType !== 'basemapat'">
|
||||
<b-field grouped>
|
||||
<b-checkbox v-model="mapOptions.difficulty" size="is-small" @input="setMapOption('difficulty', $event)">Hiking difficulty</b-checkbox>
|
||||
<b-checkbox v-model="mapOptions.difficulty" size="is-small" @input="setMapOption('difficulty', $event)">
|
||||
Hiking difficulty
|
||||
<b-icon pack="fas" icon="info-circle" size="is-small" type="is-info" @click.native="showHikingDifficultyInfo" />
|
||||
</b-checkbox>
|
||||
</b-field>
|
||||
<template v-if="mapType.startsWith('swisstopo')">
|
||||
<b-field grouped>
|
||||
|
@ -197,6 +200,17 @@ export default {
|
|||
icon: 'info-circle',
|
||||
iconPack: 'fas'
|
||||
})
|
||||
},
|
||||
showHikingDifficultyInfo (event) {
|
||||
event.preventDefault()
|
||||
this.$buefy.dialog.alert({
|
||||
title: 'Hiking difficulty',
|
||||
message: '<p>The hiking difficulty grading uses the <a href="https://www.sac-cas.ch/fileadmin/Ausbildung_und_Wissen/Sicher_unterwegs/Sicher_unterwegs_Wandern/2020_Berg_Alpinwanderskala_EN.pdf" target="_blank">SAC scale</a>. Colors shown are as follows:</p><ul><li><span style="color: #cccc00">Yellow</span>: T1</li><li><span style="color: #cc0000">Red</span>: T2…T3</li><li><span style="color: #3333cc">Blue</span>: T4…T6</li></ul>',
|
||||
type: 'is-info',
|
||||
hasIcon: true,
|
||||
icon: 'info-circle',
|
||||
iconPack: 'fas'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,14 +6,14 @@
|
|||
<font-awesome-icon icon="circle" />
|
||||
<font-awesome-icon :icon="['fas', 'camera-home']" transform="shrink-7 left-0.5" :style="{ color: 'white' }" />
|
||||
</font-awesome-layers>
|
||||
<div v-if="webcam.map.clustersize > 1" class="clustersize">+{{ webcam.map.clustersize - 1 }}</div>
|
||||
<div v-if="webcam.clusterSize > 1" class="clustersize">+{{ webcam.clusterSize - 1 }}</div>
|
||||
</div>
|
||||
<MglPopup :closeButton="false" @added="popupAdded">
|
||||
<div :class="['thumbwrapper', size]">
|
||||
<a :href="thumbnailHref" target="_blank"><img class="thumb" :src="thumbnailSrc" /></a>
|
||||
<div class="caption">{{ title }}</div>
|
||||
<template v-if="webcam.map.clustersize > 1 && size != 'is-small'">
|
||||
<div class="clustercaption">{{ webcam.map.clustersize - 1 }} more webcam{{ webcam.map.clustersize > 2 ? 's' : '' }}</div>
|
||||
<template v-if="webcam.clusterSize > 1 && size != 'is-small'">
|
||||
<div class="clustercaption">{{ webcam.clusterSize - 1 }} more webcam{{ webcam.clusterSize > 2 ? 's' : '' }}</div>
|
||||
<div class="clusterinfo">zoom in to view</div>
|
||||
</template>
|
||||
<div class="attribution">Webcams provided by <a href="https://www.windy.com/" target="_blank">windy.com</a></div>
|
||||
|
@ -43,10 +43,10 @@ export default {
|
|||
return this.webcam.title
|
||||
},
|
||||
thumbnailSrc () {
|
||||
return this.$store.state.mapOptions.webcamsType === 'current' ? this.webcam.image.current.preview : this.webcam.image.daylight.preview
|
||||
return this.$store.state.mapOptions.webcamsType === 'current' ? this.webcam.images.current.preview : this.webcam.images.daylight.preview
|
||||
},
|
||||
thumbnailHref () {
|
||||
return this.$mq.mobile ? this.webcam.url.current.mobile : this.webcam.url.current.desktop
|
||||
return 'https://www.windy.com/webcams/' + this.webcam.webcamId
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -32,12 +32,41 @@ export default {
|
|||
},
|
||||
loadWebcams () {
|
||||
// Convert MapBox zoom level to Google Maps like zoom level
|
||||
let mapZoom = Math.floor(Math.min(this.map.getZoom() + 2, 22))
|
||||
let mapBounds = this.map.getBounds().getNorthEast().lat + ',' + this.map.getBounds().getNorthEast().lng + ',' + this.map.getBounds().getSouthWest().lat + ',' + this.map.getBounds().getSouthWest().lng + ',' + mapZoom
|
||||
let mapZoom = Math.floor(Math.min(this.map.getZoom() + 1, 18))
|
||||
|
||||
axios.get('https://api.windy.com/api/webcams/v2/map/' + mapBounds, { params: { key: this.windyApiKey, show: 'webcams:location,image,url,map' } })
|
||||
// Windy v3 API has a limit on the latitude/longitude span relative to the zoom level.
|
||||
// Ensure that we are within the limit, lower the zoom level if necessary, otherwise
|
||||
// we will get a 400 response.
|
||||
let latSpan = Math.abs(this.map.getBounds().getNorthEast().lat - this.map.getBounds().getSouthWest().lat)
|
||||
let lngSpan = Math.abs(this.map.getBounds().getNorthEast().lng - this.map.getBounds().getSouthWest().lng)
|
||||
while (mapZoom > 4) {
|
||||
let maxAllowedLatSpan = 22.5 / Math.pow(2, mapZoom - 4)
|
||||
let maxAllowedLngSpan = 45 / Math.pow(2, mapZoom - 4)
|
||||
if (latSpan < maxAllowedLatSpan && lngSpan < maxAllowedLngSpan) {
|
||||
break
|
||||
}
|
||||
mapZoom--
|
||||
}
|
||||
|
||||
if (mapZoom <= 4) {
|
||||
// We have reached the limit of what we can request via the API - so don't request anything
|
||||
this.webcams = []
|
||||
return
|
||||
}
|
||||
|
||||
axios.get('https://api.windy.com/webcams/api/v3/map/clusters', {
|
||||
headers: { 'X-WINDY-API-KEY': this.windyApiKey },
|
||||
params: {
|
||||
northLat: this.map.getBounds().getNorthEast().lat,
|
||||
eastLon: this.map.getBounds().getNorthEast().lng,
|
||||
southLat: this.map.getBounds().getSouthWest().lat,
|
||||
westLon: this.map.getBounds().getSouthWest().lng,
|
||||
zoom: mapZoom,
|
||||
include: 'location,images,urls'
|
||||
}
|
||||
})
|
||||
.then(response => {
|
||||
this.webcams = response.data.result.webcams.filter(webcam => { return webcam.status === 'active' })
|
||||
this.webcams = response.data.filter(webcam => { return webcam.status === 'active' })
|
||||
})
|
||||
}
|
||||
},
|
||||
|
|
|
@ -22,7 +22,7 @@ export default {
|
|||
},
|
||||
prefs: {
|
||||
key: 'photosUploaderPrefs',
|
||||
props: ['gpsNotificationShown']
|
||||
props: ['gpsNotificationShown', 'resolutionWarningShown']
|
||||
},
|
||||
mixins: [api, prefs],
|
||||
computed: {
|
||||
|
@ -55,6 +55,18 @@ export default {
|
|||
})
|
||||
this.gpsNotificationShown = true
|
||||
}
|
||||
|
||||
if (res.data.length > 0 && res.data[0].width < 1600 && res.data[0].height < 1600 && !this.resolutionWarningShown) {
|
||||
this.$buefy.dialog.alert({
|
||||
title: 'Low photo resolution',
|
||||
message: '<p>Your photo has been uploaded successfully, but its resolution is quite low (< 1600 pixels width or height). Please upload original, full resolution photos whenever possible. SOTLAS will automatically resize them as appropriate.</p><p><small>This alert will not appear again for future uploads of low resolution photos.</small></p>',
|
||||
type: 'is-info',
|
||||
hasIcon: true,
|
||||
icon: 'info-circle',
|
||||
iconPack: 'far'
|
||||
})
|
||||
this.resolutionWarningShown = true
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
error(err)
|
||||
|
@ -81,7 +93,8 @@ export default {
|
|||
},
|
||||
data () {
|
||||
return {
|
||||
gpsNotificationShown: false
|
||||
gpsNotificationShown: false,
|
||||
resolutionWarningShown: false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ export default {
|
|||
let summitPhotos = this.summit.photos
|
||||
if (this.minDate) {
|
||||
summitPhotos = summitPhotos.filter(photo => {
|
||||
return moment(photo.uploadDate).isSameOrAfter(moment(this.minDate))
|
||||
return photo.uploadDate && moment(photo.uploadDate).isSameOrAfter(moment(this.minDate))
|
||||
})
|
||||
}
|
||||
summitPhotos.forEach(photo => {
|
||||
|
|
|
@ -104,6 +104,7 @@ export default {
|
|||
'swisstopo': 'swisstopo (Vector)',
|
||||
'swisstopo_raster': 'swisstopo (Raster)',
|
||||
'swisstopo_aerial': 'swisstopo (Aerial)',
|
||||
'basemapat': 'basemap.at',
|
||||
'caltopo': 'CalTopo',
|
||||
'toposvalbard': 'TopoSvalbard',
|
||||
'norkart': 'Norkart'
|
||||
|
|
Ładowanie…
Reference in New Issue