Skip to content

LukaWe/LocalExifGeoMap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

12 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Local Exif Geo Map ๐Ÿ“

A powerful, privacy-focused, browser-based tool to visualize and analyze GPS data from your photos. Simply drag and drop images to generate interactive maps, heatmaps, elevation profiles, and trip statistics.

PHP 8.2+

Why?

I've always wanted a self-hosted tool to analyze my photos and turn them into maps. Then came my Croatian vacation, where the wind decided my hammock was its mortal enemy. At 2 AM, sleep-deprived and slightly windburnt, I retreated to the beach and coded the entire core of this app on my phone like a complete maniac.

It's still a beautiful disasterโ€”powered by sea breeze, insomnia, and questionable life choices. But shockingly, most of it actually works.

All translations besides Bavarian (which I painstakingly did myself, because I'm apparently that specific flavor of weird) were churned out by AI, mostly EuroLLM and Claude. So if German reads like a robot having a stroke, you know why.

๐Ÿ“ธ Screenshots

Interactive Map Dark Mode Elevation Profile Overpass
Interactive Map Dark Mode Elevation Profile Overpass Import

โœจ Features

๐Ÿ“ท Image Analysis

  • Drag & Drop Upload: Simply drop photos onto the sidebar to extract GPS data
  • EXIF GPS Extraction: Automatically reads GPS coordinates, timestamps, and elevation from image metadata
  • Orphaned Photo Sync: New! Photos without GPS data are automatically placed on the map if they match the timestamp of an uploaded GPX track (needs to be tested)
  • Batch Processing: Handle thousands of images (tested up to 50,000+ photos)
  • Progress Tracking: Real-time progress bar during image processing

Interactive Mapping

  • 12+ Map Styles: OpenStreetMap, Esri Satellite/Terrain, CartoDB (light/dark/voyager), OpenTopoMap, OPNV (transport), OpenRailwayMap, and more
  • Track Customization:
    • Line Style: Solid, Dashed, or Dotted lines
    • Visuals: Adjustable line color, thickness, and opacity
  • Track Points:
    • Markers: Custom shapes (circle, square, star, etc.), colors, sizes, and borders
    • Timestamps: Toggle permanent timestamp labels for every point
    • Direction Arrows: Visualize movement direction with adjustable size/spacing
  • Auto-Follow: "Follow Mode" keeps the map centered on your position during playback

๐Ÿ“ Points of Interest & OpenStreetMap Data

  • POI Editor: Click anywhere on the map to add custom waypoints with names and descriptions
  • OpenStreetMap Data: Load nearby POIs directly from Overpass API (with "Server Busy" handling):
    • Tourism: Viewpoints, Museums, Hotels, Hostels, Information Centers, Attractions
    • Food & Drink: Restaurants, Cafes, Fast Food, Bars, Pubs, Biergartens
    • Water: Drinking Water, Springs
    • Peaks: Mountain Peaks (with elevation in meters)
    • Historic: Castles, Ruins, Monuments, Memorials, Archaeological Sites
    • Nature: Camping, Huts, Nature Reserves (NSG), Landscape Protection (LSG), Bird Sanctuaries (VSG), FFH Areas
    • Transport: Bus Stops, Train Stations
  • Info Boxes: Click any POI to see details:
    • Name & Type
    • Elevation (if available)
    • Website Links
    • Wikipedia Links (auto-detected languages)

๐Ÿ”ฅ Heatmap

  • Density Visualization: See where you spent the most time
  • 5 Color Schemes: Fire, Cool, Earth, Marine, Twilight
  • Adjustable Parameters: Intensity, radius, blur, and opacity

๐Ÿ“ˆ Elevation Profile

  • Interactive Chart: Click on chart to highlight position on map and see exact statistics
  • Zoom & Pan: Chart.js powered interactive elevation graph
  • Statistics: Global Elevation gain/loss, min/max elevation
  • Responsive: "Jump to Elevation Profile" link and expandable sidebar for detailed analysis

โ–ถ๏ธ Animation

  • Playback Controls: Play/pause your journey over time
  • Adjustable Speed: 0.5x to 5x playback speed
  • Follow Mode: Camera automatically follows current position
  • Trail Effect: Visual path history during playback

๐Ÿ“Š Statistics

  • Total Distance: Calculated track length in km
  • Duration: Time span from first to last photo
  • Average Speed: Movement speed calculation
  • Point Count: Number of GPS points from images and tracks

๐Ÿ“… Timeline

  • Chronological View: See all track points ordered by time
  • Jump to Position: Click timeline entries to navigate on map

๐Ÿ’พ Export Options

  • PNG Export: One-click download of the current map view as a high-quality PNG image (including all active layers, heatmaps, and markers)
  • GPX Export: Export your analyzed photo track as a standard GPX file compatible with Strava, Garmin, Komoot, and Google Earth
  • Backup: Save your curated map data for later use

๐ŸŒ Multi-Language Support

11 languages supported:

  • ๐Ÿ‡ฌ๐Ÿ‡ง English
  • ๐Ÿ‡ฉ๐Ÿ‡ช Deutsch
  • ๐Ÿ‡ฎ๐Ÿ‡น Italiano
  • ๐Ÿ‡ญ๐Ÿ‡ท Hrvatski
  • ๐Ÿ‡ต๐Ÿ‡ฑ Polski
  • ๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol
  • ๐Ÿ‡บ๐Ÿ‡ฆ ะฃะบั€ะฐั—ะฝััŒะบะฐ
  • ๐Ÿ‡ณ๐Ÿ‡ฑ Nederlands
  • ๐Ÿ‡ธ๐Ÿ‡ช Svenska
  • ๐Ÿ‡ณ๐Ÿ‡ด Norsk
  • Bavaria Bayerisch

๐ŸŽจ UI/UX

  • Dark Mode: Toggle between light and dark themes (dark by default)
  • Responsive Design: Works on desktop and mobile browsers
  • Collapsible Sections: Organize sidebar with expandable panels
  • Toast Notifications: User-friendly feedback messages

๐Ÿ”’ Privacy First

Your photos never leave your device!

All GPS extraction and processing happens entirely in your browser. No images are uploaded to any server. The only network requests are:

  • Loading map tiles (from tile providers like OpenStreetMap)
  • Optional: Loading OSM POI data (from Overpass API)

This means your personal photos and location data remain 100% private. Also, there is no logging at all from the app.


๐Ÿ› ๏ธ Technologies

Category Technology
Frontend HTML5, CSS3 (Vanilla), JavaScript (ES6+)
Mapping Leaflet.js, Leaflet.heat, Leaflet.PolylineDecorator
EXIF Parsing exifr
Charting Chart.js
Export dom-to-image
Backend PHP 8.2+ (for asset serving and security headers)

๐Ÿ“ฆ Installation & Usage

Requirements

  • PHP 8.2 or higher
  • A modern web browser (Chrome, Firefox, Safari, Edge)

Installation

  1. Clone the repository (or download as ZIP and extract)
  2. Configure your web server point to the public/ directory

Deployment

For production use, deploy to any PHP-capable web server (Apache, Nginx with PHP-FPM, etc.)


๐Ÿ“ Project Structure

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

โš ๏ธ Limitations

  • GPS Data Required: Only photos with embedded GPS EXIF data will be mapped
  • Browser Memory: Very large batches (50,000+ images) may be slow on devices with limited RAM
  • Tile Providers: Some map styles may have usage limits or require attribution
  • OSM Data: Overpass API queries are limited to ~300 POIs per request to prevent overload

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.


๐Ÿ™ Credits

GPS Track Viewer is built on the shoulders of giants. We thank the developers and contributors of these amazing open-source projects:


โ˜• Support the Project

If you find this useful and want to support: Bitcoin (BTC): bc1q3lz8vxpk0rchqn6dq8g08rkcqts425csuvnjr2477uzdenak5n8sfds2ke


๐Ÿ“ฌ Contact

For questions, suggestions, or bug reports, please open an issue on GitHub.

About

A powerful, privacy-focused, browser-based tool to visualize and analyze GPS data from your photos. Simply drag and drop images to generate interactive maps, heatmaps, elevation profiles, and trip statistics.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors