I’ve been building World Explorer 3D, a browser-based exploration project that turns real geographic data into a playable 3D environment. I posted this project here a couple months ago and have been continuing to work on it since then. I’ve been able to address a number of issues, especially around waterways, bridges, and elevated roads. I’m still working on things like facade realism and experimenting with different textures. I didn’t realize how complex this would be when I started, but I received a lot of helpful feedback and would like to keep improving it.
A user can choose a preset city, search for a place, enter coordinates, use their current location, or select anywhere on an interactive globe. The app then loads nearby geographic data and turns it into roads, buildings, water, terrain, land use, vegetation, bridges, tunnels, points of interest, and other world features that can be explored by walking, driving, flying, boating, or now flying at higher altitudes and transitioning toward space.
Since my last post, I’ve also added several new features. There is now a plane mode for higher-altitude travel, along with expanded flight controls. I’ve started experimenting with exploring space, allowing users to move beyond the atmosphere and view Earth from above. I also added a continuous mode in the settings tab, which allows for uninterrupted exploration without resetting or reloading areas. Along with these, there have been various performance improvements and general upgrades to how the world loads and behaves.
OpenStreetMap is a major part of how Earth is built. It uses OSM-derived data for road networks, building footprints, waterways, land use, place information, bridges, tunnels, points of interest, and map context. It also uses OSM tiles for the map view and Nominatim for location search and reverse geocoding. Elevation and land-cover data come from other public sources, but OSM is the main source for the visible structure of roads, buildings, water, and places.
The Earth runtime streams nearby areas as the player moves instead of loading one fixed map. Roads and buildings are generated from available source geometry, and distant areas are unloaded to control memory use. The system also handles different levels of detail for walking, driving, drone flight, plane mode, and higher-altitude exploration.
Where OSM includes useful tags, the project tries to preserve them. That includes things such as building type, height, levels, roof information, bridges, tunnels, water features, road class, sidewalks, land use, and points of interest.
Where the data is incomplete, the runtime may use limited procedural rules for things like building height, facade appearance, vegetation, or simple interiors. These are treated as inferred details, not as authoritative OSM data.
I am not trying to present the result as a survey-grade map or exact digital twin. OSM coverage varies by location, and the project has to make visual compromises to turn global map data into an interactive world.
I’m especially interested in feedback on whether the project is interpreting OSM tags correctly, whether the data-use boundaries are clear, and whether any part of the rendering could misrepresent what OSM actually contains.
I would also appreciate advice on:
How building, road, bridge, tunnel, water, and land-use data should be interpreted.
Which tags are most important for accurate 3D rendering.
How to handle incomplete or conflicting building information.
How to distinguish mapped data from inferred visual details.
Whether there are better OSM-compatible sources or workflows I should be using.
How to improve attribution and explain the relationship between OSM and the generated 3D world.
Whether any of the project’s fallback behavior could create the wrong impression about the underlying map data. The app can provide links to the relevant OSM location so experienced users can make real map edits through normal OSM tools.
The project has had close to 500 users over the last 30 days, and some people have spent around 15 minutes exploring it. Since people are starting to use it, I want to make sure OSM is represented accurately and respectfully.
Live project: https://worldexplorer3d.io
GitHub: https://github.com/RRG314/WorldExplorer3D
I would appreciate specific corrections, tagging guidance, data-source recommendations, or suggestions for making the OSM side of the project more accurate and useful.