This repository showcases a clean-room implementation of Google Maps, built in high-performance C++, leveraging binary data from the OpenStreetMap (OSM) project. This project includes an intuitive and feature-rich UI along with advanced pathfinding and navigation algorithms. It was a comprehensive endeavor that achieved professional-grade GIS polish.
- Dynamic Map Rendering: Smooth, zoomable, and interactive maps using OSM data.
- Route Planning: Optimized routes for single and multi-destination trips.
- Turn-by-Turn Navigation: Real-time instructions based on precomputed paths.
- Geocoding and Reverse Geocoding: Conversion between human-readable addresses and geographic coordinates.
- Search: High-speed search functionality for locations, addresses, and points of interest.
- Traveling Salesperson Problem (TSP) Heuristics: Efficient routing for multi-stop deliveries with custom heuristics.
- Customizable UI: Intuitive user interface inspired by modern mapping applications.
- High-Performance Multithreading: Parallelized algorithms to handle large-scale data efficiently.
- Programming Language: C++ (highly optimized for performance).
- Libraries Used:
- OpenStreetMap Data API
- Nanoflann for geospatial data manipulation
- Qt for the UI framework
- Boost for advanced C++ features
- Pathfinding:
- Dijkstra's and A* algorithms for shortest path computation.
- Custom heuristics for faster convergence in urban environments.
- Map Rendering:
- Quad-tree indexing for real-time map rendering.
- Binary data preprocessing for OSM data.
- Optimization:
- Custom memory management to handle large datasets.
- Nanoflann optimizations for computational geometry tasks.
- Handling massive datasets efficiently by preprocessing and storing data in binary formats.
- Designing a scalable architecture to accommodate real-time updates and future feature expansion.
- Overcoming computational limitations of the TSP by implementing effective heuristics.
A fully interactive and feature-complete user interface.
Sidemenu showing POI interface, public transit options, settings and the tasteful name of the product
Maximum level zoom POI information
Full high precision coordinate system support
Autocomplete support, modern UI, shadows, animations
Sidemenu showing POI interface, public transit options, settings as an animation
Dynamic route computation with seamless updates - demonstrated between arbitrary pin-chosen locations. A* algorithm visualization enabled for demo purposes.
Real-time animation of zoom levels
Slowed demonstration of close zoom
Slowed demonstration of POI maximum level zoom
This project builds a Linux executable named mapper using a provided Makefile.
- GCC 9.0+ or MSVC 2019+
- CMake 3.15+
- Make
- Qt 5.15+
- Boost Libraries
- OSM data in binary format (you must provide this separately due to licensing).
- Clone:
git clone https://github.com/maxsteep/GMaps-Clone-OSM-MAKS_Maps.gitandcdinto the directory. - Build: Run
makein the project root (where theMakefileis). - Run: Execute
./mapper, ensuring your OSM binary data is in the correct location.
Note: You may need to adjust library paths if you encounter build errors. If the application has issues loading, ensure your OSM data is correctly formatted. Refer to the full README for more detailed instructions.
- Integration with real-time traffic APIs.
- Mobile application support for iOS and Android.
- Advanced predictive algorithms for user behavior.
Developed by Max and Kevin Xu, leveraging a passion for geospatial technology and high-performance computing.
This project represents signficant effort and a commitment to quality, aiming to push the boundaries of what's possible with open-source data and high-performance computing.








