Inspiration

The inspiration is my struggle to find good long distance running routes while training for the Detroit Marathon in 2021 and 2022. From looking while training, I was unable to find a way to find good long-distance routes and instead roughly estimate how far where I plan to run is.

What it does

Takes starting, ending, waypoints, and length of run to create a new route for you to take to train for the specified distance. This will then generate a path following generation rules that aim for a target distance that you specify.

How we built it

Within Flutter we use its pre-built scaffolding to generate the framework that is used for our Android app. To impose the path onto the map, we generate a line by manipulating the data from API calls. The combination of polylines in combination with the API calls allows a route to be created by a series of coordinates. This dynamically generates the path based on the output from our code in its finished state. From the API call to Google Maps, we needed to manipulate the data, decode information, and reformat it to get to our polyline that is imposed onto the map.

Challenges we ran into

We came across many challenges this weekend while working on our project. We had issues with getting an Android virtual machine where apps were not loading properly as well as working with environment variables to debug in VSC and get our demo up and running. The Google Maps API was also difficult to reverse engineer what was being done and what the returns meant. The coordinate string that is used for the polyline is a densely formatted series of coordinates and decoding into how we format the information on our end was difficult. (i.e. reformatting to what we worked with). We also encountered the project breaking last night and having to backtrack into a workable state and continue with what we were working on before the critical failure.

Accomplishments that we're proud of

We as a group are very proud of getting a stable project that is able to be shown on its own. As our first hackathon, we are ecstatic to have a working project and the team effort from the initial idea, the execution, and collaboration on using all of our skills together to have a end product that resembles our original vision.

What we learned

As of now, we learned that maps are extremely complex and information dense, to the point that the information given needed to be decoded to get into an understandable state for us and our code. We also are very happy to have learned some basic Flutter/Dart from both the workshop and on our own to figure out how we can do front-end work that can interact with Google products and APIs to complete more complex tasks like our project.

What's next for RouteRunner

Next steps for us would definitely be adding the use of extending routes to match a specified distance (see Google Slides) as well as implementing a better UI also seen in our slides. We would also like to optimize our user states to have better flow, readability, etc. (i.e. UX). Being able to choose from multiple generations as well as selecting addresses rather than points on a map.

Share this project:

Updates