# HikeMap - KML Track Editor A single-page web application for viewing, editing, and navigating KML/GPS tracks on an interactive map. ## Features ### Track Editing - Draw new tracks directly on the map - Reshape existing tracks with rope physics simulation - Smooth tracks with a brush tool - Smart track snapping at endpoints with auto-splitting - Multi-track selection and merge operations - 20-step undo/redo history ### Navigation Mode - Graph-based pathfinding using Dijkstra's algorithm - Automatic trail intersection detection (within 5 meters) - Real-time route recalculation when deviating >50m from path - Map rotation to face direction of travel - Auto-center on GPS position (toggleable) - Persistent destination storage ### GPS Integration - Real-time location tracking using device GPS - Automatic position updates every 3 seconds - Requires HTTPS or localhost for geolocation API ## Quick Start ### Local Development ```bash # Serve via HTTP (required for GPS geolocation API) python -m http.server 8000 ``` Then open http://localhost:8000 ### Docker Deployment ```bash # Build and run with Docker Compose docker-compose up ``` Access at http://localhost:8080 ## Technical Details ### Architecture - **Single-file application**: Everything contained in `index.html` - **No build process required**: Pure HTML/CSS/JavaScript - **CDN dependencies**: Leaflet.js 1.9.4, leaflet-rotate 0.2.8 ### File Structure The entire application is in `index.html`: - Lines 1-325: CSS styles - Lines 326-420: HTML structure - Lines 421-end: JavaScript application code ### Data Format - Supports standard KML files with Placemark elements - Automatically loads `default.kml` on startup if present - Exports edited tracks back to KML format ## Browser Requirements - Modern browser with ES6 support - HTTPS connection or localhost for GPS features - Location services permission for navigation mode ## License [Add your license information here]