Mappa Exif Geo Locale 📍
Uno strumento potente, incentrato sulla privacy, basato su browser per visualizzare e analizzare i dati GPS delle tue foto. Basta trascinare e rilasciare le immagini per generare mappe interattive, mappe di calore, profili di elevazione e statistiche di viaggio.

Perché?
Ho sempre desiderato uno strumento self-hosted per analizzare le mie foto e trasformarle in mappe. Poi sono arrivate le mie vacanze in Croazia, dove il vento ha deciso che la mia amaca fosse la sua nemica mortale. Alle 2 di notte, privato del sonno e leggermente scottato dal vento, mi sono ritirato sulla spiaggia e ho codificato l'intero nucleo di questa app sul mio telefono come un completo maniaco.
È ancora un bellissimo disastro — alimentato dalla brezza marina, dall'insonnia e da scelte di vita discutibili. Ma sorprendentemente, la maggior parte funziona davvero.
Tutte le traduzioni tranne il bavarese (che ho fatto meticolosamente da solo, perché a quanto pare sono quel tipo specifico di strano) sono state generate dall'IA, principalmente EuroLLM e Claude. Quindi se il tedesco sembra un robot con un colpo apoplettico, sai perché.
📸 Screenshot
 |  |  |  |
|---|
| Mappa interattiva | Modalità scura | Profilo di elevazione | Importazione Overpass |
✨ Caratteristiche
📷 Analisi delle immagini
- Caricamento Drag & Drop: Basta trascinare le foto nella barra laterale per estrarre i dati GPS
- Estrazione GPS EXIF: Legge automaticamente coordinate GPS, timestamp e altitudine dai metadati delle immagini
- Sincronizzazione foto orfane: Nuovo! Le foto senza dati GPS vengono automaticamente posizionate sulla mappa se corrispondono al timestamp di una traccia GPX caricata (da testare)
- Elaborazione batch: Gestisce migliaia di immagini (testato fino a oltre 50.000 foto)
- Tracciamento progresso: Barra di progresso in tempo reale durante l'elaborazione delle immagini
Mappatura interattiva
- 12+ Stili mappa: OpenStreetMap, Esri Satellite/Terrain, CartoDB (light/dark/voyager), OpenTopoMap, OPNV (trasporti), OpenRailwayMap e altri
- Personalizzazione tracce:
- Stile linea: Linee continue, tratteggiate o puntinate
- Aspetto: Colore, spessore e opacità della linea regolabili
- Punti traccia:
- Marcatori: Forme personalizzate (cerchio, quadrato, stella, ecc.), colori, dimensioni e bordi
- Timestamp: Attiva/disattiva etichette timestamp permanenti per ogni punto
- Frecce direzionali: Visualizza la direzione del movimento con dimensioni/spaziatura regolabili
- Auto-Seguimento: La "Modalità Segui" mantiene la mappa centrata sulla tua posizione durante la riproduzione
📍 Punti di Interesse e Dati OpenStreetMap
- Editor POI: Clicca in qualsiasi punto della mappa per aggiungere waypoint personalizzati con nome e descrizione
- Dati OpenStreetMap: Carica POI vicini direttamente dall'API Overpass (con gestione "Server Occupato"):
- Turismo: Punti panoramici, Musei, Hotel, Ostelli, Centri informazioni, Attrazioni
- Cibo e Bevande: Ristoranti, Caffè, Fast food, Bar, Pub, Biergarten
- Acqua: Acqua potabile, Sorgenti
- Vette: Vette montuose (con altitudine in metri)
- Storico: Castelli, Rovine, Monumenti, Memoriali, Siti archeologici
- Natura: Campeggi, Rifugi, Riserve naturali (NSG), Protezione del paesaggio (LSG), Santuari di uccelli (VSG), Aree FFH
- Trasporti: Fermate autobus, Stazioni ferroviarie
- Finestre informative: Clicca su qualsiasi POI per vedere i dettagli:
- Nome e Tipo
- Altitudine (se disponibile)
- Collegamenti al sito web
- Collegamenti Wikipedia (lingue rilevate automaticamente)
🔥 Mappa di calore
- Visualizzazione densità: Vedi dove hai trascorso più tempo
- 5 Schemi di colore: Fuoco, Freddo, Terra, Marino, Crepuscolo
- Parametri regolabili: Intensità, raggio, sfocatura e opacità
📈 Profilo di elevazione
- Grafico interattivo: Clicca sul grafico per evidenziare la posizione sulla mappa e vedere statistiche esatte
- Zoom e Pan: Grafico di elevazione interattivo basato su Chart.js
- Statistiche: Guadagno/perdita di altitudine globale, altitudine minima/massima
- Reattivo: Collegamento "Vai al profilo di elevazione" e barra laterale espandibile per analisi dettagliate
▶️ Animazione
- Controlli di riproduzione: Avvia/metti in pausa il tuo viaggio nel tempo
- Velocità regolabile: Velocità di riproduzione da 0,5x a 5x
- Modalità Segui: La telecamera segue automaticamente la posizione corrente
- Effetto scia: Cronologia del percorso visivo durante la riproduzione
📊 Statistiche
- Distanza totale: Lunghezza della traccia calcolata in km
- Durata: Intervallo di tempo dalla prima all'ultima foto
- Velocità media: Calcolo della velocità di movimento
- Conteggio punti: Numero di punti GPS da immagini e tracce
📅 Timeline
- Vista cronologica: Visualizza tutti i punti traccia ordinati per tempo
- Vai alla posizione: Clicca sulle voci della timeline per navigare sulla mappa
💾 Opzioni di esportazione
- Esportazione PNG: Scarica con un clic la vista corrente della mappa come immagine PNG di alta qualità (inclusi tutti i layer attivi, le mappe di calore e i marcatori)
- Esportazione GPX: Esporta la traccia fotografica analizzata come file GPX standard compatibile con Strava, Garmin, Komoot e Google Earth
- Backup: Salva i dati della mappa curati per un uso successivo
🌐 Supporto multilingua
11 lingue supportate:
- 🇬🇧 English
- 🇩🇪 Deutsch
- 🇮🇹 Italiano
- 🇭🇷 Hrvatski
- 🇵🇱 Polski
- 🇪🇸 Español
- 🇺🇦 Українська
- 🇳🇱 Nederlands
- 🇸🇪 Svenska
- 🇳🇴 Norsk
Bayerisch
🎨 UI/UX
- Modalità scura: Passa tra temi chiari e scuri (scuro per impostazione predefinita)
- Design reattivo: Funziona su browser desktop e mobile
- Sezioni comprimibili: Organizza la barra laterale con pannelli espandibili
- Notifiche Toast: Messaggi di feedback intuitivi
🔒 Privacy Prima di Tutto
Le tue foto non lasciano mai il tuo dispositivo!
Tutta l'estrazione e l'elaborazione GPS avviene interamente nel tuo browser. Nessuna immagine viene caricata su alcun server. Le uniche richieste di rete sono:
- Caricamento delle tessere della mappa (da provider di tessere come OpenStreetMap)
- Opzionale: Caricamento dei dati POI OSM (dall'API Overpass)
Ciò significa che le tue foto personali e i dati di posizione rimangono al 100% privati.
Inoltre, non c'è alcuna registrazione (logging) da parte dell'app.
🛠️ Tecnologie
📦 Installazione e Utilizzo
Requisiti
- PHP 8.2 o superiore
- Un browser web moderno (Chrome, Firefox, Safari, Edge)
Installazione
- Clona il repository (o scarica come ZIP ed estrai)
- Configura il tuo server web in modo che punti alla directory
public/
Distribuzione
Per l'uso in produzione, distribuisci su qualsiasi server web con supporto PHP (Apache, Nginx con PHP-FPM, ecc.)
📁 Struttura del progetto
gps-track-viewer/
├── public/ # Web root
│ ├── assets/
│ │ ├── js/ # Application JavaScript
│ │ │ ├── app.js # Main application logic
│ │ │ └── TrackParser.js # GPX/KML parsing
│ │ └── styles.css # Application styles
│ ├── lib/ # PHP classes
│ │ ├── Assets/ # Asset handling
│ │ ├── Security/ # Session & security
│ │ ├── View/ # Template rendering
│ │ └── Config.php # Configuration
│ ├── templates/ # PHP templates
│ │ └── app.php # Main application template
│ ├── vendor/ # Frontend libraries (Leaflet, etc.)
│ ├── index.php # Application entry point
│ └── router.php # Development server router
└── README.md
⚠️ Limitazioni
- Dati GPS richiesti: Verranno mappate solo le foto con dati GPS EXIF incorporati
- Memoria del browser: Lotti molto grandi (oltre 50.000 immagini) potrebbero essere lenti su dispositivi con RAM limitata
- Provider di tessere: Alcuni stili di mappa potrebbero avere limiti di utilizzo o richiedere attribuzione
- Dati OSM: Le query API Overpass sono limitate a ~300 POI per richiesta per evitare sovraccarichi
🤝 Contributi
I contributi sono benvenuti! Sentiti libero di aprire issue e inviare pull request.
🙏 Crediti
GPS Track Viewer è costruito sulle spalle di giganti. Ringraziamo gli sviluppatori e i contributori di questi fantastici progetti open-source:
☕ Supporta il Progetto
Se lo trovi utile e vuoi supportare:
Bitcoin (BTC): bc1q3lz8vxpk0rchqn6dq8g08rkcqts425csuvnjr2477uzdenak5n8sfds2ke
📬 Contatti
Per domande, suggerimenti o segnalazioni di bug, apri una issue su GitHub.