A Progressive Web App that transforms your Android car system into a Need for Speed style minimap with real-time GPS tracking, rotating map, and customizable themes.
- NFS Heat/Unbound - Modern cyan glowing roads
- NFS Most Wanted - Classic blue styling
- NFS Underground - Neon green street racing aesthetic
- Configurable update interval (0.1s - 2s)
- Rotating minimap that keeps car centered
- Real-time speed display (KM/H or MPH)
- Street name detection
- Trail history showing your path
- 7 Accent Colors: Cyan, Blue, Green, Yellow, Orange, Red, Purple
- Toggleable Elements:
- Speed display
- Street names
- Compass indicator
- Trail history
- Map rotation
- Adjustable Settings:
- GPS update frequency
- Map zoom level (13-19)
- Speed unit (KM/H/MPH)
- Progressive Web App (PWA) - install to home screen
- Cache map tiles for offline use
- Service worker for offline functionality
- Works without internet after caching
- Copy all files to your Android device
- Open
index.htmlin Chrome or any modern browser - Grant location permissions when prompted
- Open
index.htmlin Chrome - Tap the menu (โฎ) and select "Add to Home Screen" or "Install App"
- The app will install and can be launched like a native app
- Enable fullscreen mode for best experience
If you want to serve it properly:
# Using Python 3
python -m http.server 8000
# Using Node.js
npx http-server -p 8000
# Then open http://localhost:8000 in your browser- Open the app
- Grant location permissions when prompted
- Wait for GPS lock (may take 10-30 seconds initially)
- The minimap will center on your location
Tap the settings icon (โ๏ธ) in the top-left to access:
Choose between Heat, Most Wanted, or Underground themes
Select from 7 different accent colors for the UI
- Lower values (0.1s): More responsive, higher battery usage
- Higher values (1-2s): Better battery life, slightly less smooth
Adjust from 13 (zoomed out) to 19 (zoomed in)
Enable/disable individual features as needed
Tap "Cache Current Area" to download map tiles for offline use
- Caches tiles in a 2km radius
- Works across multiple zoom levels
- May take a few minutes depending on connection
- First Use: Allow GPS to stabilize before driving
- Battery: Lower GPS update interval if battery is a concern
- Offline: Cache your frequent routes before going offline
- Performance: Close other apps for smoother rotation
- Mounting: Mount device in landscape mode for best visibility
- HTML5 - Structure and markup
- CSS3 - Styling with NFS-inspired themes
- JavaScript (ES6+) - Application logic
- Leaflet.js - Map rendering
- OpenStreetMap - Map tiles and data
- Service Workers - Offline functionality
- Geolocation API - GPS tracking
- Modern browser with Geolocation API support
- Chrome, Firefox, Safari, Edge (latest versions)
- JavaScript enabled
- Location permissions granted
Car/
โโโ index.html # Main HTML file
โโโ styles.css # All styling and themes
โโโ app.js # Main application logic
โโโ service-worker.js # Offline functionality
โโโ manifest.json # PWA configuration
โโโ README.md # This file
โโโ img ref/ # Reference images
Edit styles.css and add a new theme:
[data-theme="mytheme"] {
--accent-color: #yourcolor;
}
[data-theme="mytheme"] .leaflet-tile-pane {
filter: grayscale(100%) brightness(0.4) /* your filters */;
}Then update app.js to include the theme in settings.
In styles.css, modify #minimap-container:
#minimap-container {
width: 400px; /* Change this */
height: 400px; /* And this */
}Modify default in app.js:
this.settings = {
gpsInterval: 0.1, // Change default here
// ... other settings
};- Check permissions: Ensure location access is granted
- Check GPS: Make sure device GPS is enabled
- Wait: Initial GPS lock can take 30-60 seconds
- Try outdoors: GPS works better with clear sky view
- Check internet: Map tiles require internet (first time)
- Cache tiles: Use "Cache Current Area" for offline use
- Try different zoom: Some zoom levels may load better
- Device orientation: Ensure device is in landscape
- Toggle setting: Try disabling/enabling "Rotate Map"
- Performance: Close other apps if rotation is laggy
- HTTPS required: Some features require HTTPS
- Cache first: Must cache tiles while online
- Storage space: Ensure device has sufficient storage
- Use lower GPS update intervals (0.5s or higher)
- Reduce map zoom level
- Disable trail history if not needed
- Clear cached tiles periodically
- Use 0.1s GPS update interval
- Keep GPS enabled before starting
- Use in open areas with clear sky view
- Enable high accuracy in device GPS settings
- Location data: Used only locally, never transmitted
- Map tiles: Loaded from OpenStreetMap servers
- Street names: Fetched from Nominatim API
- No tracking: No analytics or user tracking
- Local storage: Settings stored only on device
- Requires GPS-enabled device
- Map tiles require internet (unless cached)
- Street name lookup requires internet
- Battery usage increases with lower update intervals
- Circular map clips some UI elements at edges
- Waypoint/destination markers
- Speed limit warnings
- Compass needle instead of N indicator
- More detailed car icons
- Voice navigation hints
- Route recording and playback
- Multiple car icon styles
- Map Data: ยฉ OpenStreetMap contributors
- Map Library: Leaflet.js
- Geocoding: Nominatim API
- Inspired by: Need for Speed game series
Free to use and modify for personal use.
For issues or questions, check the reference images in img ref/ folder to see the intended design aesthetic.
Enjoy your NFS-style minimap! Drive safe! ๐๏ธ๐จ