@panoramax/web-viewer 3.2.1 → 3.2.2-develop-69587b96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -1
- package/build/index.css +2 -2
- package/build/index.css.map +1 -1
- package/build/index.js +3 -3
- package/build/index.js.map +1 -1
- package/package.json +2 -2
- package/src/Editor.js +2 -0
- package/src/Viewer.js +0 -1
- package/src/components/Loader.js +1 -0
- package/src/components/Map.js +8 -0
- package/src/components/Photo.js +1 -1
- package/src/translations/da.json +48 -8
- package/src/translations/de.json +9 -4
- package/src/translations/en.json +7 -1
- package/src/translations/fr.json +7 -1
- package/src/translations/it.json +6 -6
- package/src/translations/nl.json +18 -5
- package/src/translations/zh_Hant.json +7 -2
- package/src/utils/Utils.js +3 -2
- package/src/utils/Widgets.js +17 -0
- package/src/viewer/Widgets.css +31 -3
- package/src/viewer/Widgets.js +100 -31
- package/tests/__snapshots__/Editor.test.js.snap +2 -0
- package/tests/components/__snapshots__/Loader.test.js.snap +2 -2
- package/tests/components/__snapshots__/Photo.test.js.snap +2 -0
- package/tests/utils/__snapshots__/Widgets.test.js.snap +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@panoramax/web-viewer",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.2-develop-69587b96",
|
|
4
4
|
"description": "Panoramax web viewer for geolocated pictures",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"author": "Panoramax team",
|
|
@@ -252,4 +252,4 @@
|
|
|
252
252
|
]
|
|
253
253
|
]
|
|
254
254
|
}
|
|
255
|
-
}
|
|
255
|
+
}
|
package/src/Editor.js
CHANGED
|
@@ -253,6 +253,7 @@ export default class Editor extends CoreView {
|
|
|
253
253
|
|
|
254
254
|
const imgBgStreets = document.createElement("img");
|
|
255
255
|
imgBgStreets.src = BackgroundStreets;
|
|
256
|
+
imgBgStreets.alt = "";
|
|
256
257
|
|
|
257
258
|
labelBgStreets.appendChild(imgBgStreets);
|
|
258
259
|
labelBgStreets.appendChild(document.createTextNode(this._t.gvs.map_background_streets));
|
|
@@ -272,6 +273,7 @@ export default class Editor extends CoreView {
|
|
|
272
273
|
|
|
273
274
|
const imgBgAerial = document.createElement("img");
|
|
274
275
|
imgBgAerial.src = BackgroundAerial;
|
|
276
|
+
imgBgAerial.alt = "";
|
|
275
277
|
|
|
276
278
|
labelBgAerial.appendChild(imgBgAerial);
|
|
277
279
|
labelBgAerial.appendChild(document.createTextNode(this._t.gvs.map_background_aerial));
|
package/src/Viewer.js
CHANGED
package/src/components/Loader.js
CHANGED
package/src/components/Map.js
CHANGED
|
@@ -57,6 +57,8 @@ export default class Map extends maplibregl.Map {
|
|
|
57
57
|
attributionControl: false,
|
|
58
58
|
dragRotate: false,
|
|
59
59
|
pitchWithRotate: false,
|
|
60
|
+
touchZoomRotate: true,
|
|
61
|
+
touchPitch: false,
|
|
60
62
|
preserveDrawingBuffer: !parent.isWidthSmall(),
|
|
61
63
|
transformRequest: parent._api._getMapRequestTransform(),
|
|
62
64
|
locale: parent._t.maplibre,
|
|
@@ -68,6 +70,11 @@ export default class Map extends maplibregl.Map {
|
|
|
68
70
|
this._options = options;
|
|
69
71
|
this.getContainer().classList.add("gvs-map");
|
|
70
72
|
|
|
73
|
+
// Disable touch rotate
|
|
74
|
+
if(options.touchZoomRotate === undefined) {
|
|
75
|
+
this?.touchZoomRotate?.disableRotation();
|
|
76
|
+
}
|
|
77
|
+
|
|
71
78
|
// Handle raster source
|
|
72
79
|
if(this._options.raster) {
|
|
73
80
|
this._options.background = this._options.background || "streets";
|
|
@@ -786,6 +793,7 @@ export default class Map extends maplibregl.Map {
|
|
|
786
793
|
_getPictureMarker(selected = true) {
|
|
787
794
|
const img = document.createElement("img");
|
|
788
795
|
img.src = selected ? MarkerSelectedSVG : MarkerBaseSVG;
|
|
796
|
+
img.alt = "";
|
|
789
797
|
return new maplibregl.Marker({
|
|
790
798
|
element: img
|
|
791
799
|
});
|
package/src/components/Photo.js
CHANGED
|
@@ -678,7 +678,7 @@ export default class Photo extends PSViewer {
|
|
|
678
678
|
else {
|
|
679
679
|
console.error(e);
|
|
680
680
|
this.overlay.show({
|
|
681
|
-
image: `<img style="width: 200px" src="${LogoDead}" />`,
|
|
681
|
+
image: `<img style="width: 200px" src="${LogoDead}" alt="" />`,
|
|
682
682
|
title: this._parent._t.gvs.error,
|
|
683
683
|
text: label + "<br />" + this._parent._t.gvs.error_click,
|
|
684
684
|
dissmisable,
|
package/src/translations/da.json
CHANGED
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"filter_user": "Bruger",
|
|
89
89
|
"filter_user_mypics": "Mine billeder",
|
|
90
90
|
"filter_picture": "Billedtype",
|
|
91
|
-
"filter_zoom_in": "Zoom ind for at
|
|
91
|
+
"filter_zoom_in": "Zoom ind for at se dette filter",
|
|
92
92
|
"picture_flat": "Klassisk",
|
|
93
93
|
"picture_360": "360°",
|
|
94
94
|
"filter_qualityscore_help": "Klik for at aktivere eller deaktivere",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"map_theme": "Korttema",
|
|
99
99
|
"error_pic": "Det ønskede billede blev ikke fundet",
|
|
100
100
|
"error_api_compatibility": "Billedserveren er ikke kompatibel med denne version af fremviseren",
|
|
101
|
-
"filter_qualityscore": "
|
|
101
|
+
"filter_qualityscore": "Kvalitetsscore",
|
|
102
102
|
"error_josm": "JOSM svarer ikke, kører den, og er fjernstyring aktiveret?",
|
|
103
103
|
"metadata_general_seqid_link": "Gå til JSON-beskrivelse af sekvensen",
|
|
104
104
|
"map_theme_default": "Klassisk",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
"map_theme_age_3": "< 1 år",
|
|
108
108
|
"map_theme_age_4": "< 1 måned",
|
|
109
109
|
"map_theme_type": "Kameratype",
|
|
110
|
-
"map_theme_score": "
|
|
110
|
+
"map_theme_score": "Kvalitetsscore",
|
|
111
111
|
"contrast": "Aktivér højere billedkontrast",
|
|
112
112
|
"metadata_general_picid": "Billed-identifikator",
|
|
113
113
|
"metadata_general_seqid": "Sekvens-identifikator",
|
|
@@ -125,18 +125,58 @@
|
|
|
125
125
|
"metadata_location_latitude": "Breddegrad",
|
|
126
126
|
"metadata_location_orientation": "Optageretning",
|
|
127
127
|
"metadata_location_precision": "Præcision i positionering",
|
|
128
|
-
"metadata_quality": "
|
|
129
|
-
"metadata_quality_score": "Global
|
|
130
|
-
"metadata_quality_gps_score": "
|
|
131
|
-
"metadata_quality_help": "Få mere at vide om
|
|
128
|
+
"metadata_quality": "Kvalitetsscore",
|
|
129
|
+
"metadata_quality_score": "Global score",
|
|
130
|
+
"metadata_quality_gps_score": "Positioneringsscore",
|
|
131
|
+
"metadata_quality_help": "Få mere at vide om kvalitetsscore",
|
|
132
132
|
"map_theme_age": "Optagelsesdato",
|
|
133
133
|
"metadata_location": "Placering",
|
|
134
134
|
"metadata": "Metadata for billede",
|
|
135
|
-
"metadata_location_longitude": "Længdegrad"
|
|
135
|
+
"metadata_location_longitude": "Længdegrad",
|
|
136
|
+
"metadata_quality_resolution_score": "Opløsningsscore",
|
|
137
|
+
"metadata_quality_missing": "ingen værdi indstillet i billedet",
|
|
138
|
+
"metadata_exif": "EXIF / XMP",
|
|
139
|
+
"metadata_exif_name": "Tag",
|
|
140
|
+
"metadata_exif_value": "Værdi",
|
|
141
|
+
"report": "Indberet billede",
|
|
142
|
+
"report_auth": "Denne indberetning vil blive sendt via din konto \"{a}\"",
|
|
143
|
+
"report_nature_label": "Problemets karakter",
|
|
144
|
+
"report_nature": {
|
|
145
|
+
"": "Vælg problemets art…",
|
|
146
|
+
"blur_missing": "En persons ansigt eller bils nummerplade er synlig",
|
|
147
|
+
"blur_excess": "Et objekt, der ikke har brug for sløring, sløres",
|
|
148
|
+
"inappropriate": "Billedet er upassende (ikke relevant, nøgenhed…)",
|
|
149
|
+
"privacy": "En privat sti eller ejendom er synlig",
|
|
150
|
+
"picture_low_quality": "Billedet er af meget dårlig kvalitet",
|
|
151
|
+
"mislocated": "Billedet er dårligt placeret på kortet",
|
|
152
|
+
"copyright": "Billedet krænker ophavsretten",
|
|
153
|
+
"other": "Enhver anden form for problem"
|
|
154
|
+
},
|
|
155
|
+
"report_whole_sequence": "Det gælder hele sekvensen",
|
|
156
|
+
"report_details": "Yderligere detaljer",
|
|
157
|
+
"report_details_placeholder": "Hvis du vil, kan du tilføje detaljer om problemet, og hvad det drejer sig om",
|
|
158
|
+
"report_email": "Din e-mail",
|
|
159
|
+
"report_email_placeholder": "Valgfri",
|
|
160
|
+
"report_submit": "Indsend",
|
|
161
|
+
"report_wait": "Sender indberetning …",
|
|
162
|
+
"report_success": "Indberetningen er blevet sendt. Den vil blive gennemgået så hurtigt som muligt.",
|
|
163
|
+
"report_failure": "Der opstod en fejl under oprettelse af indberetning: {e}. Prøv venligst igen senere.",
|
|
164
|
+
"qualityscore_title": "Om kvalitetsscoren",
|
|
165
|
+
"qualityscore_doc_2": "Bedømmelsen vises for brugerne som en A/B/C/D/E-score (A er den bedste, E den dårligste) og vises grafisk via denne skala:",
|
|
166
|
+
"qualityscore_doc_3": "Den beregnes ud fra GPS-præcision og billedopløsning. Et professionelt system vil have en A-rating, et 360° actionkamera vil have en B-rating, og en smartphone vil have en C/D/E-rating.",
|
|
167
|
+
"qualityscore_doc_link": "Yderligere oplysninger om beregningen af kvalitetsscore findes i vores dokumentation.",
|
|
168
|
+
"qualityscore_doc_1": "Panoramax tilbyder en kvalitetsscore for hvert billede. Det giver mulighed for nem kortfiltrering og overskuelig visning af tilgængelige billeder af høj kvalitet.",
|
|
169
|
+
"minimize_short": "Skjul"
|
|
136
170
|
},
|
|
137
171
|
"psv": {
|
|
138
172
|
"loadError": "Panoramaet kan ikke indlæses",
|
|
139
173
|
"twoFingers": "Brug to fingre til at navigere",
|
|
140
174
|
"ctrlZoom": "Brug ctrl + scroll til at zoome ind på billedet"
|
|
175
|
+
},
|
|
176
|
+
"map": {
|
|
177
|
+
"loading": "Indlæser…",
|
|
178
|
+
"thumbnail": "Miniature af billedet, der holdes",
|
|
179
|
+
"not_public": "Ikke offentligt synlig",
|
|
180
|
+
"slow_loading": "Kortet indlæses langsomt og kan virke defekt"
|
|
141
181
|
}
|
|
142
182
|
}
|
package/src/translations/de.json
CHANGED
|
@@ -118,9 +118,9 @@
|
|
|
118
118
|
"map_theme_age_4": "< 1 Monat",
|
|
119
119
|
"error_subtitle": "Bitte versuchen sie es später erneut, oder schauen sie in die Web-Browser-Konsole für mehr Details.",
|
|
120
120
|
"moveLeft": "Nach links",
|
|
121
|
-
"share_rss_title": "RSS Feed neuer Sequenzen auf
|
|
122
|
-
"error_webgl": "WebGL wird von
|
|
123
|
-
"metadata_general_license_link": "
|
|
121
|
+
"share_rss_title": "RSS Feed neuer Sequenzen auf dem aktuell sichtbaren Kartenbereich",
|
|
122
|
+
"error_webgl": "WebGL wird von ihrem Browser nicht unterstützt",
|
|
123
|
+
"metadata_general_license_link": "Volle Lizenzbeschreibung ansehen",
|
|
124
124
|
"share_embed_docs": "Mehr über die Einbettungs-Konfiguration lesen",
|
|
125
125
|
"report_nature": {
|
|
126
126
|
"": "Art des Problems auswählen…",
|
|
@@ -160,7 +160,12 @@
|
|
|
160
160
|
"metadata_quality_help": "Erfahre mehr über den Qualitätswert",
|
|
161
161
|
"metadata_quality_resolution_score": "Auflösungswertung",
|
|
162
162
|
"metadata_quality_gps_score": "Positionswertung",
|
|
163
|
-
"metadata_quality_score": "Gesamtwertung"
|
|
163
|
+
"metadata_quality_score": "Gesamtwertung",
|
|
164
|
+
"qualityscore_title": "Über den Qualitätsfaktor",
|
|
165
|
+
"qualityscore_doc_link": "Weitere Informationen zur Berechnung des Qualitätsfaktors findest du in unserer Dokumentation.",
|
|
166
|
+
"qualityscore_doc_1": "Panoramax bietet einen Qualitätsfaktor für jedes Bild. Es ermöglicht eine einfache Kartenfilterung und eine umfassende Anzeige der Verfügbarkeit hochwertiger Bilder.",
|
|
167
|
+
"qualityscore_doc_2": "Die Note wird den Benutzern als A/B/C/D/E-Bewertung angezeigt (A ist die beste, E die schlechteste) und anhand dieser Skala grafisch dargestellt:",
|
|
168
|
+
"qualityscore_doc_3": "Die Berechnung erfolgt auf der Grundlage der GPS-Genauigkeit und der Bildauflösung. Ein professionelles System wird mit A bewertet, eine 360-Grad-Action-Kamera mit B und ein Smartphone mit C/D/E."
|
|
164
169
|
},
|
|
165
170
|
"psv": {
|
|
166
171
|
"twoFingers": "Nutzen sie zwei Finger zum navigieren",
|
package/src/translations/en.json
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"show_psv": "Show the picture viewer",
|
|
23
23
|
"show_map": "Show the map",
|
|
24
24
|
"minimize": "Hide this widget, you can show it again using button in bottom left corner",
|
|
25
|
+
"minimize_short": "Hide",
|
|
25
26
|
"options": "Options",
|
|
26
27
|
"filters": "Filters",
|
|
27
28
|
"layers": "Layers",
|
|
@@ -98,11 +99,16 @@
|
|
|
98
99
|
"filter_user": "User",
|
|
99
100
|
"filter_user_mypics": "My pictures",
|
|
100
101
|
"filter_picture": "Picture type",
|
|
101
|
-
"filter_zoom_in": "Zoom-in
|
|
102
|
+
"filter_zoom_in": "Zoom-in to see this filter",
|
|
102
103
|
"picture_flat": "Classic",
|
|
103
104
|
"picture_360": "360°",
|
|
104
105
|
"filter_qualityscore": "Quality score",
|
|
105
106
|
"filter_qualityscore_help": "Click to enable or disable",
|
|
107
|
+
"qualityscore_title": "About the quality score",
|
|
108
|
+
"qualityscore_doc_1": "Panoramax offers a Quality Score for each picture. It allows easy map filtering and comprehensive display of high-quality pictures availability.",
|
|
109
|
+
"qualityscore_doc_2": "The grade is shown to users as a A/B/C/D/E score (A is the best, E the worst), and shown graphically through this scale:",
|
|
110
|
+
"qualityscore_doc_3": "It is computed based on GPS precision and picture resolution. A professional system will have an A-rating, a 360° action camera will have a B-rating, and a smartphone will be C/D/E-rated.",
|
|
111
|
+
"qualityscore_doc_link": "More details about the Quality Score computation is available in our documentation.",
|
|
106
112
|
"map_background": "Map background",
|
|
107
113
|
"map_background_aerial": "Aerial",
|
|
108
114
|
"map_background_streets": "Streets",
|
package/src/translations/fr.json
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"show_psv": "Afficher la visionneuse de photos",
|
|
23
23
|
"show_map": "Afficher la carte",
|
|
24
24
|
"minimize": "Masquer ce widget, vous pouvez l'afficher de nouveau grâce au bouton dans le coin en bas à gauche",
|
|
25
|
+
"minimize_short": "Masquer",
|
|
25
26
|
"options": "Options",
|
|
26
27
|
"filters": "Filtres",
|
|
27
28
|
"layers": "Calques",
|
|
@@ -102,7 +103,12 @@
|
|
|
102
103
|
"picture_360": "360°",
|
|
103
104
|
"filter_qualityscore": "Score de qualité",
|
|
104
105
|
"filter_qualityscore_help": "Cliquez pour activer ou désactiver",
|
|
105
|
-
"
|
|
106
|
+
"qualityscore_title": "À propos du score qualité",
|
|
107
|
+
"qualityscore_doc_1": "Panoramax propose un Score de Qualité pour chacune de ses photos. Cela facilite le filtre et la recherche de photos de bonne qualité sur la carte.",
|
|
108
|
+
"qualityscore_doc_2": "Le score est affiché sous la forme d'une lettre A/B/C/D/E (A étant le meilleur, E le moins bon), et visualisable grâce à cette échelle :",
|
|
109
|
+
"qualityscore_doc_3": "Il est calculé en fonction de la précision du GPS ainsi que la résolution de la photo. Un matériel professionnel aura une note de A, une caméra sportive 360° une note de B, et un smartphone une note de C à E.",
|
|
110
|
+
"qualityscore_doc_link": "Plus d'infos sur le calcul du Score Qualité dans notre documentation.",
|
|
111
|
+
"filter_zoom_in": "Zoomez plus pour voir ce filtre",
|
|
106
112
|
"map_background": "Fond de carte",
|
|
107
113
|
"map_background_aerial": "Satellite",
|
|
108
114
|
"map_background_streets": "Plan",
|
package/src/translations/it.json
CHANGED
|
@@ -50,16 +50,16 @@
|
|
|
50
50
|
"☕ Iniezione di caffeina",
|
|
51
51
|
"😀 Sorridete, siete stati mappati!",
|
|
52
52
|
"🐈 Condivisione delle foto di gatti",
|
|
53
|
-
"😴 Riduzione della
|
|
53
|
+
"😴 Riduzione della procrastinazione",
|
|
54
54
|
"🫖 Preparazione del tè",
|
|
55
55
|
"🐧 Apertura del codice sorgente",
|
|
56
56
|
"🚇 Indicizzazione delle stazioni della metro",
|
|
57
57
|
"🧹 Pulizia dei metadata",
|
|
58
58
|
"🚒 Invio delle foto delle stazioni dei pompieri",
|
|
59
59
|
"🚲 Aggiornamento delle strade verdi",
|
|
60
|
-
|
|
60
|
+
"🚉 Passeggiata sulle banchine della stazione",
|
|
61
61
|
"🛰️ Ricerca dei satelliti",
|
|
62
|
-
|
|
62
|
+
"👥 Scrittura delle persone",
|
|
63
63
|
"🐟 Ricerca dei negozi di patatine fritte",
|
|
64
64
|
"🧑💻 Debug dell’interfaccia",
|
|
65
65
|
"📈 Incremento delle statistiche"
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"error_pic": "La foto richiesta non è stata trovata",
|
|
69
69
|
"error_nopic": "Nessuna foto disponibile alla posizione richiesta",
|
|
70
70
|
"error_api": "Il server delle foto non è disponibile",
|
|
71
|
-
"error_webgl": "
|
|
71
|
+
"error_webgl": "Il tuo browser non supporta WebGL",
|
|
72
72
|
"error_josm": "JOSM non risponde, è in esecuzione con il controllo remoto abilitato?",
|
|
73
73
|
"error_api_compatibility": "Il server delle foto non è compatibile con questa versione del visualizzatore",
|
|
74
74
|
"filter_date": "Data",
|
|
@@ -139,10 +139,10 @@
|
|
|
139
139
|
"map_theme_age_1": "> 2 anni",
|
|
140
140
|
"map_theme_type": "Tipo di fotocamera",
|
|
141
141
|
"minimize": "Nascondi il widget, puoi mostrarlo di nuovo usando il pulsante nell’angolo in basso a sinistra",
|
|
142
|
-
"metadata_general_license_link": "
|
|
142
|
+
"metadata_general_license_link": "Vedi la descrizione completa della licenza",
|
|
143
143
|
"share_rss": "Feed RSS",
|
|
144
144
|
"show_psv": "Mostra il visualizzatore delle foto",
|
|
145
|
-
"share_rss_title": "Feed RSS delle nuove sequenze nell’area visibile della mappa",
|
|
145
|
+
"share_rss_title": "Feed RSS delle nuove sequenze nell’attuale area visibile della mappa",
|
|
146
146
|
"sequence_prev": "Foto precedente della sequenza",
|
|
147
147
|
"sequence_more": "Altre opzioni di riproduzione",
|
|
148
148
|
"josm_live": "Abilita la sincronizzazione automatica di JOSM al caricamento delle foto",
|
package/src/translations/nl.json
CHANGED
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"🔍 EXIF metadata analyseren",
|
|
15
15
|
"🏘️ 3D rendering",
|
|
16
16
|
"📷 360° afbeelden initialiseren",
|
|
17
|
-
"🟠 Kleur balancering"
|
|
17
|
+
"🟠 Kleur balancering",
|
|
18
|
+
"💯 Bereken kwaliteits-score ©"
|
|
18
19
|
],
|
|
19
20
|
"share_embed_docs": "Lees meer over embedded instellingen",
|
|
20
21
|
"sequence_pause": "Pauzeer sequentie",
|
|
@@ -54,12 +55,24 @@
|
|
|
54
55
|
"expand_info": "De widget op de volledige pagina weergeven",
|
|
55
56
|
"minimize": "Verberg deze widget, je kan hem terug tonen met de knop linksonder",
|
|
56
57
|
"loading_labels_fun": [
|
|
57
|
-
"🦌 Detectie
|
|
58
|
+
"🦌 Detectie verkeersborden overstekende herten",
|
|
58
59
|
"🚘 Panoramax auto zoeken ©",
|
|
59
60
|
"☕ Cafeïne-injectie",
|
|
60
|
-
|
|
61
|
-
"🐈 Foto's delen van katten"
|
|
62
|
-
|
|
61
|
+
"😀 Gelukt, je kaart is gekaart!",
|
|
62
|
+
"🐈 Foto's delen van katten",
|
|
63
|
+
"😴 Uitstelgedrag verminderen",
|
|
64
|
+
"🫖 Thee zetten",
|
|
65
|
+
"🐧 Broncode openen",
|
|
66
|
+
"🚇 Indexering metrostations",
|
|
67
|
+
"🧹 Metadata opschonen",
|
|
68
|
+
"🚒 Foto's van brandweerkazernes versturen",
|
|
69
|
+
"🚲 Fiets- en wandelpaden bijwerken",
|
|
70
|
+
"🚉 Perron doorgang",
|
|
71
|
+
"🛰️ Satellieten zoeken",
|
|
72
|
+
"👥 Personas opslaan"
|
|
73
|
+
],
|
|
74
|
+
"share_rss_title": "RSS-feed van nieuwe reeksen in het nu zichtbare kaartgebied",
|
|
75
|
+
"josm_live": "Schakel JOSM automatische synchronisatie in bij het laden van afbeeldingen"
|
|
63
76
|
},
|
|
64
77
|
"psv": {
|
|
65
78
|
"twoFingers": "Gebruik twee vingers om te navigeren",
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"map_theme_score": "品質分數",
|
|
153
153
|
"metadata_camera_resolution": "解析度",
|
|
154
154
|
"metadata_quality": "品質分數",
|
|
155
|
-
"metadata_quality_help": "
|
|
155
|
+
"metadata_quality_help": "深入了解品質分數",
|
|
156
156
|
"metadata_quality_gps_score": "定位分數",
|
|
157
157
|
"metadata_quality_resolution_score": "解析度分數",
|
|
158
158
|
"metadata_quality_missing": "相片未包含資訊",
|
|
@@ -160,7 +160,12 @@
|
|
|
160
160
|
"metadata_quality_score": "整體分數",
|
|
161
161
|
"filter_user_mypics": "我的相片",
|
|
162
162
|
"filter_date_1month": "1 個月",
|
|
163
|
-
"filter_date_1year": "1 年"
|
|
163
|
+
"filter_date_1year": "1 年",
|
|
164
|
+
"qualityscore_doc_2": "分數以 A/B/C/D/E 等級的形式顯示 (A 最佳、E 最差) ,並透過這個量尺視覺化顯示:",
|
|
165
|
+
"qualityscore_doc_link": "關於品質分數的計算方式,請參閱我們的文件。",
|
|
166
|
+
"qualityscore_title": "關於品質分數",
|
|
167
|
+
"qualityscore_doc_1": "Panoramax 為每張相片提供品質分數,這能幫助我們輕鬆地在地圖上篩選和顯示高品質相片。",
|
|
168
|
+
"qualityscore_doc_3": "它根據 GPS 精確度和相片解析度計算得出,專業設備的等級為 A、360° 運動相機的等級為 B、智慧型手機的等級為 C/D/E。"
|
|
164
169
|
},
|
|
165
170
|
"map": {
|
|
166
171
|
"loading": "正在載入…",
|
package/src/utils/Utils.js
CHANGED
|
@@ -31,8 +31,8 @@ export const QUALITYSCORE_VALUES = [
|
|
|
31
31
|
{ color: "#f6a020", label: "E" },
|
|
32
32
|
];
|
|
33
33
|
|
|
34
|
-
export const QUALITYSCORE_RES_FLAT_VALUES = [1,
|
|
35
|
-
export const QUALITYSCORE_RES_360_VALUES = [
|
|
34
|
+
export const QUALITYSCORE_RES_FLAT_VALUES = [1, 10, 2, 15, 3, 30, 4]; // Grade, < Px/FOV value
|
|
35
|
+
export const QUALITYSCORE_RES_360_VALUES = [3, 15, 4, 30, 5]; // Grade, < Px/FOV value
|
|
36
36
|
export const QUALITYSCORE_GPS_VALUES = [5, 1.01, 4, 2.01, 3, 5.01, 2, 10.01, 1]; // Grade, < Meters value
|
|
37
37
|
export const QUALITYSCORE_POND_RES = 4/5;
|
|
38
38
|
export const QUALITYSCORE_POND_GPS = 1/5;
|
|
@@ -117,6 +117,7 @@ function svgToPSVLink(svg, fillColor) {
|
|
|
117
117
|
catch(e) {
|
|
118
118
|
const img = document.createElement("img");
|
|
119
119
|
img.src = svg;
|
|
120
|
+
img.alt = "";
|
|
120
121
|
return img;
|
|
121
122
|
}
|
|
122
123
|
}
|
package/src/utils/Widgets.js
CHANGED
|
@@ -56,6 +56,12 @@ export function createExpandableButton(id, icon, label, container, classes = [])
|
|
|
56
56
|
btn.appendChild(fa(icon));
|
|
57
57
|
if(!container._viewer.isWidthSmall()) {
|
|
58
58
|
btn.appendChild(document.createTextNode(label));
|
|
59
|
+
if(classes.includes("gvs-filter-unset-btn")) {
|
|
60
|
+
const resetIcon = fa(faXmark, { classes: ["gvs-filter-unset-btn"]});
|
|
61
|
+
resetIcon.style.display = "none";
|
|
62
|
+
btn.appendChild(resetIcon);
|
|
63
|
+
classes = classes.filter(v => v !== "gvs-filter-unset-btn");
|
|
64
|
+
}
|
|
59
65
|
btn.appendChild(fa(faChevronDown));
|
|
60
66
|
}
|
|
61
67
|
else {
|
|
@@ -64,15 +70,25 @@ export function createExpandableButton(id, icon, label, container, classes = [])
|
|
|
64
70
|
btn.classList.add("gvs-btn", "gvs-widget-bg", "gvs-btn-expandable", ...classes);
|
|
65
71
|
btn.setActive = val => {
|
|
66
72
|
let span = btn.querySelector(".gvs-filters-active");
|
|
73
|
+
const resetIcon = btn.querySelector(".gvs-filter-unset-btn");
|
|
74
|
+
const downIcon = btn.querySelector(".fa-chevron-down");
|
|
67
75
|
if(val && !span) {
|
|
68
76
|
span = document.createElement("span");
|
|
69
77
|
span.classList.add("gvs-filters-active");
|
|
70
78
|
const svg = btn.querySelector("svg");
|
|
71
79
|
if(svg.nextSibling) { btn.insertBefore(span, svg.nextSibling); }
|
|
72
80
|
else { btn.appendChild(span); }
|
|
81
|
+
if(resetIcon) {
|
|
82
|
+
resetIcon.style.display = null;
|
|
83
|
+
downIcon.style.display = "none";
|
|
84
|
+
}
|
|
73
85
|
}
|
|
74
86
|
else if(!val && span) {
|
|
75
87
|
span.remove();
|
|
88
|
+
if(resetIcon) {
|
|
89
|
+
resetIcon.style.display = "none";
|
|
90
|
+
downIcon.style.display = null;
|
|
91
|
+
}
|
|
76
92
|
}
|
|
77
93
|
};
|
|
78
94
|
return btn;
|
|
@@ -112,6 +128,7 @@ export function createSearchBar(
|
|
|
112
128
|
input.type = "text";
|
|
113
129
|
input.placeholder = placeholder;
|
|
114
130
|
input.id = `${id}-input`;
|
|
131
|
+
input.setAttribute("autocomplete", "off");
|
|
115
132
|
bar.appendChild(input);
|
|
116
133
|
const extendInput = () => {
|
|
117
134
|
bar.classList.remove("gvs-search-bar-reduced");
|
package/src/viewer/Widgets.css
CHANGED
|
@@ -103,6 +103,12 @@
|
|
|
103
103
|
|
|
104
104
|
.gvs-mini .gvs-corner .gvs-widget-bg { box-shadow: none; }
|
|
105
105
|
.gvs-widget-bg a { color: var(--widget-font-btn-direct); }
|
|
106
|
+
.gvs-widget-bg button.gvs-btn-link {
|
|
107
|
+
color: var(--widget-font-btn-direct);
|
|
108
|
+
background: none;
|
|
109
|
+
border: none;
|
|
110
|
+
cursor: pointer;
|
|
111
|
+
}
|
|
106
112
|
|
|
107
113
|
.gvs-hidden,
|
|
108
114
|
.gvs-focus-map .gvs-only-psv,
|
|
@@ -663,6 +669,7 @@ a.gvs-btn { text-decoration: none; }
|
|
|
663
669
|
#gvs-filter-panel {
|
|
664
670
|
width: 350px;
|
|
665
671
|
max-width: 350px;
|
|
672
|
+
padding: 0;
|
|
666
673
|
}
|
|
667
674
|
#gvs-filter-panel .gvs-filter-active {
|
|
668
675
|
background-color: var(--widget-bg-active);
|
|
@@ -680,11 +687,32 @@ a.gvs-btn { text-decoration: none; }
|
|
|
680
687
|
color: var(--widget-font-active);
|
|
681
688
|
background: none;
|
|
682
689
|
}
|
|
683
|
-
|
|
690
|
+
.gvs-filter-block {
|
|
691
|
+
position: relative;
|
|
692
|
+
padding: 10px 15px;
|
|
693
|
+
border-bottom: 2px solid var(--widget-border-div);
|
|
694
|
+
}
|
|
695
|
+
.gvs-filter-block:first-child {
|
|
696
|
+
padding-top: 15px;
|
|
697
|
+
}
|
|
698
|
+
.gvs-filter-block:last-child {
|
|
699
|
+
border-bottom: none;
|
|
700
|
+
padding-bottom: 15px;
|
|
701
|
+
}
|
|
702
|
+
.gvs-filter-zoomin {
|
|
703
|
+
z-index: 10;
|
|
704
|
+
background-color: rgba(255,255,255,0.8);
|
|
684
705
|
text-align: center;
|
|
685
706
|
font-weight: bold;
|
|
686
|
-
|
|
687
|
-
|
|
707
|
+
position: absolute;
|
|
708
|
+
top: 0;
|
|
709
|
+
right: 0;
|
|
710
|
+
left: 0;
|
|
711
|
+
bottom: 0;
|
|
712
|
+
display: flex;
|
|
713
|
+
justify-content: center;
|
|
714
|
+
align-items: center;
|
|
715
|
+
border-radius: 25px;
|
|
688
716
|
}
|
|
689
717
|
|
|
690
718
|
#gvs-filter-qualityscore {
|