Inspiration
Many people start with the best intentions when it comes to exercise, yet struggle to stay consistent over time. Rigid routines, repetitive routes, and a lack of motivation often turn movement into a chore rather than something to look forward to. There are countless apps which can help one with their fitness journey, but they unfortunately don't work for everyone.
We were inspired by people who have been using the GPS tracking in their smartwatch or phone to make images or spell out words once the route is viewed in an app. We believe that an app which makes this quick and easy can add a fun, social twist to a walk, jog, cycle, and many other forms of exercise. Unlike a distance number on a treadmill, this has a creative aspect which we hope can be enough to push some people into getting started on re-developing their exercise routine.
What it does
This is a web platform which gives the user an interactive map, where they can select their preferred local area. They can then draw or upload images, and corresponding routes will be found on the map. The user is then free to go on this journey, after which they will have the image visible when they check their GPS.
How we built it
We began by creating prototypes in HTML and JavaScript, where we experimented with the front-end. We then moved on to Python, where we experimented with various algorithms to create an image from pathways on a map. Finally, we used Flask to create a polished, final app.
Challenges we ran into
There were two main challenges:
The map. There are a few options available, and we chose to use OpenStreetMap. One challenge here was incorporating the map into our UI. Another challenge is the imperfections in the data: there are many types of roads, footpaths, cycle lanes, etc. Even with broad queries, we usually had small segments which were not connected to anything, but these caused logical errors with our algorithms.
The algorithm. Taking a drawing and finding the closest route on a map is not trivial. While it was easy to, for example, find the closest road to a specific part of the drawing, it was extremely challenging to simultaneously ensure that the route produced is a complete uninterrupted journey.
Accomplishments that we're proud of
Our UI. We created a user experience which is clear and intuitive, and we did not have to compromise on much functionality when considering the deadline.
Our algorithm. We used a modified version of Dijkstra's with a simple heuristic which gave excellent results. We then optimised its complexity for large data-sets by "locking in" certain routes which seemed unlikely to change during further iterations. While the approach is very simple, it is performant enough to allow for a real-time display of the route while a user is drawing.
What we learned
We were all inexperienced with working with map data, and this project was a fantastic introduction. We learned how to access OpenStreetMap data, visualise it, and perform simple processing. Also, the work we did with algorithms was refreshingly challenging, pushing our understanding and hopefully preparing us for future challenges ahead.
What's next for Doodle Maps
There are many potential features that this platform could benefit from. Social media integration and daily streaks would further emphasise the platform's intended social aspect, which we believe is currently lacking. Additionally, we currently only tested the algorithm in dense, city environments, thus we don't know how the platform's algorithm performs in less preferable environments.
Log in or sign up for Devpost to join the conversation.