Neighborhood Map is the capstone project for Udacity’s Front-End Web Developer Nanodegree. It is a single page application featuring a Google map of a neighborhood with functionality added to include highlighted locations, third-party data about those locations, and various ways to browse the content.
Role
Front-end / Knockout
API Integration / AJAX
Type
Project
I was initially overwhelmed by the criteria listed in the project rubric. The idea of starting from scratch, using a framework and API I was not very familiar with was daunting. To combat this, I broke the project down into reasonable chunks I knew I could handle and familiarized myself with the necessary documentation.
To start, I began with styling the map I was working with. Normally I would save prettifying for last, but I knew I would be staring at the map for hours upon hours trying to get the required functionality to work. I also love styling and am confident in it which helped me build the motivation needed to dive head-first into the project.
Once I had the map styled, I set about placing the markers and animating them when they were clicked. The marker information was not yet dynamic but was instead a static array from which a list view of locations was created and the info window was populated. From here, I tested to make sure the markers would animate when clicked and the info window appeared when either the marker or the corresponding location on the list was clicked.
The rubric required at least 5 locations that could either be hard-coded or retrieved from a data API. There’s no fun in hard-coding data so it was an easy decision for me to try my hand at API integration. I chose Foursquare because it discovers the best food, entertainment, and places to go in an area, and as I had never been to Naples before and didn’t know where anything was, it was perfect for my needs.
When I first started the project, I dreaded working on the filter functionality. I had built it up as a looming beast of doom and put it off for as long as I possibly could. When I finally got around to it though, I realized it was not as daunting as I was making it out to be. By working in small steps and gaining confidence in using Knockout, by the time I had reached this stage, I knew I could implement the functionality with minimal hassle and proceeded to do so.