RikiTraki’s Hiking Tracks on the Web Evolve Alongside CesiumJS
Over a decade ago, we showcased RikiTraki, a CesiumJS application built by Ricardo Morin for recording hiking trails. Ricardo was one of the first people to see the potential value of Cesium’s high accuracy 3D terrain rendering for outdoor sports. RikiTraki, a place to upload GPX tracks and photos from hikes, was largely a personal project, but Ricardo made it open to the public—and open source.
When Ricardo released RikiTraki 2.0, which now has hundreds of registered users, we caught up on his latest developments. New improvements to the site are a reflection of the significant investment Ricardo has put into the application; they’re also an illustration of how Cesium has evolved over the last ten years.
RikiTraki allows users to upload GPX tracks from their hikes, which they can review and share in 3D. Rendering on 3D terrain makes it easier to understand a hiker’s experience in the area. Courtesy Ricardo Morin.
What has changed
All 3D: In 2015, visitors to RikiTraki would find a 2D world map built with Leaflet and the option to switch to Cesium for 3D. At the time, Ricardo felt that a 2D map was necessary for devices that didn’t have the compute power or support to run Cesium. Now, the entire site uses CesiumJS. With an always-3D view, users can seamlessly zoom in to individual trails or out for a global view. This shift was made possible by years of performance improvements by our CesiumJS team work at nearly every layer of the engine.
Efficient streaming: In its original form, RikiTraki loaded all available tracks at once, which became increasingly impractical as more users contributed data—a classic geospatial challenge. Ricardo solved this challenge by revising the app to request and display only the tracks relevant to the visitor's current view. This same principle is the foundation of 3D Tiles, the OGC community standard created by Cesium for streaming massive 3D geospatial datasets. Instead of downloading an entire dataset, 3D Tiles allows applications to efficiently stream only the portion of the world a user is looking at. And with the recent advancements in 3D Tiles 2.0, developers can now stream not just 3D models but also time-dynamic content, vector data, and continuous datasets with voxels, ensuring CesiumJS is ready for the next generation of global scale apps like RikiTraki.

Visitors to RikiTraki can explore GPX tracks near them. Courtesy Ricardo Morin.
Simplified layout: With the latest version of RikiTraki, side and bottom panels that provide more details, such as the elevation profile of a trail, open only as needed. CesiumJS has similarly advanced to offer a modular structure, giving developers access to what they need, when they need it.
Personal data: RikiTraki was meant for sharing trails, and viewers have always been able to see paths in their area or across the world. Now, each visitor to RikiTraki also has a personal page to view, manage, and curate their own tracks separately from the public tracks. This dual approach to supporting personal data and offering access to global datasets is the philosophy behind Cesium ion, which allows CesiumJS developers to bring their own data for tiling as 3D Tiles or find global datasets like Google Photorealistic 3D Tiles.

Nambe Loop, New Mexico. For every trail on RikiTraki, visitors can view detailed information about the track. Courtesy Ricardo Morin.
What hasn’t changed
Time dynamic visualization: RikiTraki doesn’t just show a hiker’s entire path at once: an animation draws the route, with the camera tracking the position along the route as it gets drawn. This allows hikers to relive their treks. 4D visualization is a core component of CesiumJS, drawn from our roots in aerospace, that makes Cesium valuable for understanding temporal spatial data.
3D terrain: CesiumJS has always been 3D first, and from its inception RikiTraki provided visitors with 3D terrain that gave them an intuitive understanding of their hikes. The site originally used elevation values from GPS devices, which were often uncalibrated or inconsistent, so track elevation is now sampled directly from the terrain. The elevation profile of a track gives viewers a quick understanding of the course of the path. High quality terrain in CesiumJS isn’t just for looks: it’s a critical foundation that allows many in our community to perform measurements and analysis.

Trillium Falls, California. RikiTraki places geolocated photos from hikers’ treks at the appropriate spots on the trail. Courtesy Ricardo Morin.
Easy sharing: RikiTraki has always been publicly available on the internet and easy to share with a link. In the newest version, URLs are simple and predictable, clearly listing the user name to link to a personal space, the lat/lon to show a location, or a track ID for a specific trail. Likewise, CesiumJS endures as an accessible, secure way to share your geospatial data.
Open source: Ricardo’s work, like CesiumJS itself, is open source and on GitHub. Ricardo documents the site’s architecture and updates on his blog, and he has contributed in the past to Cesium learning materials. We encourage all members of the CesiumJS community to be active contributors to CesiumJS and the community forum.
For more than ten years, RikiTraki has provided a way to visualize, remember, and share outdoor experiences. We’re proud of the apps our community builds with CesiumJS and committed to continuously improving the tools you use: subscribe to the release roundup thread on the Cesium forum to get monthly notifications of new releases.