Porównaj commity

...

9 Commity

14 zmienionych plików z 657 dodań i 15 usunięć

Wyświetl plik

@ -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]
}
}
]
}

Wyświetl plik

@ -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",

Wyświetl plik

@ -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",

Wyświetl plik

@ -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",

Wyświetl plik

@ -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",

Wyświetl plik

@ -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
}
},

Wyświetl plik

@ -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",

Wyświetl plik

@ -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: () => {

Wyświetl plik

@ -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'
})
}
}
}

Wyświetl plik

@ -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: {

Wyświetl plik

@ -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' })
})
}
},

Wyświetl plik

@ -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
}
}
}

Wyświetl plik

@ -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 => {

Wyświetl plik

@ -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'