Originally inspired from a project I did during the second year of University, I needed to find the shortest distance between two 'cities'. This was originally an idea meant to understand nodes and the connections between them for efficiency but as I finished it I wanted to make my own project like Google maps or Apple maps. Even these large companies do not have good maps or logic for creating walking paths or loops. Especially on google, I would have to manually tap around a lake or park in order to get a walking or biking route. That would be a pain to do and rarely worked as expected.
The worst case scenerio with this was when I was trying to walk around the lake system where I live and instead of taking the lake paths and walking routes, it wanted be to walk on the highways and road systems. That would have taken me away from the lakes, streams, and prairies that I wanted to see. I would much rather google use the paths that the community has paved and made in order to enjoy the outside instead of just the road information that they have for more rural regions.
Thats when I decided to make the solution myself. This project uses data from major route collecting networks, pieces together the routes noted as walking paths, steps, sidewalks and what not, uses them as nodes and then finds a reasonable path from one place to another in a loop. To give an example, enter in your home town. The program will then generate the layout including all listed paths. The program will take the paths as nodes and connect them along a line and will return what the most logical path would be from beginning to end.
For cases that are loops the program will find a loop around a selected landmark, lake, building system, or even town. It took a little bit more time on this part as the program might want to go back the way you just came rather then going the other way around to make an actual loop. I also needed to make sure that it would not try to lead you through private property or through buildings. The worst issue that I came across was trying to cut through a whole lake like you could walk on water.
Other issues that came on early would be how to store this data. The program needs to mark where and how each of these routes are, how they interact with each other, how it would display, and how it would react when a decent path was not found. This was also a case of trying to make it as simple as possible. A person can be given a very advanced application that tells them exactly what to do and how to enter information, but if it gives to many options and to much information, the adverage person will not want to use it.
Thats also when I though about what makes the other apps so popular. How often are ou putting in more then just the starting and ending location into maps? How often do you need to enter more then two or three pieces of information before what you want comes out the other side. The point is not that it can do everything you need it to do ever with ten button pushes, it matters you can get the needed information in 5 or less
This application did not have to work across millions of phones, it just needed to do what I needed it to: very simple directions without having me walk into oncoming traffic. So I got to work. I made a simple UI, got some APIs to get the surrounding location data including any routes that might be good for walking. I also kept the inputs needed as low as possible so that intereacting with the program would be at a minimum. And what came out the other side? Something that I believe covers all cases that I originally set out for.
As I revisit this program, I relize it has some bugs left to iron out. Acknowledging that it was a longer coder that made this, I intend to revisit this and truly fix it and make it better then what I left it as a younger man.
Not only was this a good stepping stone into the world of using APIs as a student, but also in maintaining projects. While some of the mistakes that were made I can see now, I am sure I said it was good enough then. Knowing that not fixing it in th moment leads to more work later is definitely refreshing to be seen when its to myself. The last thing that I would say about what I learned is that while it is good to succeed, its also important to revisit your failures to improve them. The rising tide raises all ships and I can not wait for high tide. Thank you.