nickcapurso / MetroPlanner

App which tells you what trains to take and where to transfer to reach a desired destination.
1 stars 0 forks source link

MetroPlanner

The goal of this project is to develop a simple, but intuitive app to aid visitors or newcomers in using the D.C. Metro to get where they need to go. Users will be able to input a street address or location and the app will attempt to get the user as close as possible to that destination by solely using the metro – with the idea that they user can either walk or take another mode of transportation to their destination after stepping off the metro. Their route will be displayed on a map using the Google Maps (and Places) API and they will also receive textual directions on what trains to take, where to transfer, etc. The WMATA API and Apache HTTP Components APIs will also be used to get information on the metro lines and stations. Also featured is the ability to display any service warnings / disruptions and keep a history of previous trips.

Pathing logic is done on the device, with the initial idea that the app would not be dependent on some external server (other than WMATA). Because of the relatively small size of the D.C. Metro, the data transfer is not high. However, future iterations could possibly leverage the high processing power of (cloud) servers to calculate Metro paths more efficiently and consider various metrics (like minimizing on: number of transfers, number of stops, cost, etc.).

Features

1. To start pathing, a user specifies a desination address of place and then, for the starting location, has the option to use their current location or can manually input a starting location. 
2. Locations can be specified with street addresses or general place names (for example, "Reagan Airport").
3. Metro trips are kept in a SQL database and can be recalled at a later time.
4. The user can view current Metro alerts or warnings.
5. The user can open up a map of the Metro in their browser.

Quick Start

The API dependencies are taken care of by the build.grade file, however Apache HTTP Components have been deprecated as of Android API 23 (Marshmallow), so the current highest-supported SDK and Build Tools level is API 22.

Development computers will need to have their SHA1 fingerprints added to the Google Developers Console to be authenticated for the Google-based APIs used by the app. Otherwise the Google Maps screen will not show.