This page will guide you with an overview on what you need to build this tool from scratch.
You will need a lot of data, but also a lot of software.
Let's break the stack down:
Osm Carto tiles)DEM (DSM) model of the whole planetNominatim server to get addressesOverpass API server to get other informationGraphHopper server to get routingtitler: to dynamically serve RGB encoded datategola: to dynamically serve vector tilesThis is the old fashioned stack mixed with some newer features coming from vector tiles. It works with pretty much every client. This will bring you down the rabbit hole of the geo-world.
Have a look at /maps to see what you can use. The choice is yours
All of them got 3D powers with WebGL. Every platform is different in terms of use case:
Leaflet: small easy fast mapOpenLayer: complicated tools map, thousand of pluginsMaplibreGL: Half way from Leaflet and OpenLayer. <------ MY CHOICECesiumPlatform: mostly used in monitoring and planning aviation, satellite, flying stuffThings you need to learn (before, or in the meantime you build your map)
GDAL: you will quickly realize the whole georeferenced world lives on GDAL's back.qGIS: essential to debug and help developmentPostGIS: essential in order to store data, and retrieve it fastLinux: just stop using windows. You will spend half of the time figuring out if X or Y does not work because of wrong configuration, or just because you need to deal with of some windows shit or missing feature. Do you a favor and switch to Linux. You can always use it in a VM if you really need that shitty software that runs only on windows. Don't try to run this stack on windows (or, at least, don't say you were not told).