Trail Finder is an application that uses geolocation (a users current GPS location) and gives them feedback, telling them the closest trail heads* to them at that location. This project was derived out of a personal need to locate various towpath trails in the NE Ohio area.
*Trail heads can be found most often at parks and towpaths and are typically for walking or riding a bicycle.
What it can do so far:
- Find a users location using GPS, return and pinpoint the 3 closest locations to them
- Return the correct 3 closest locations to the table
- Write out a list of 3 locations (not sorted yet)
- Give them an info window with location info
To Do:
Return the correct 3 closest locations to the table (already works on the map)All locations listed should have the exact distance (miles) from the users current locationa. The above works, it just doesn't display the output in the correct DIV, yet.- Add more data (currently there is only about 20 pieces of sample data in Fusion Tables),
- More Results should show '50' more of the closest locations. a. Need to create directive to update map plugins queryLimit to 50 b. Reload page to show updated locations c. On reload it will obviously need to persist that queryLimit of 50
- Create favorites UI and workflow. Should be able to add/remove/sort favs.
- Create search functionality
- Add ability to swipe a row to show other options (or buttons to show options).
- Integrate with Phonegap in order for above to work (swipe gestures).
Trail Finder uses many open source libraries to do cool stuff...
- jQuery
- Google Maps API
- Google Fusion Tables API
- Bootstrap 3.0
- Phonegap
The /Trailhead folder (poor naming convention, I will fix that later) contains a working copy of the Trailfinder app within the Phonegap framework (currently working on iOS). This is the ultimate goal of Trailfinder is to "port" it to iOS and Android for use on mobile devices. So far, Trailfinder compiles and runs in Xcode and the iOS simulator, in which it is able to find the users location and give them the appropriate feedback. Development using Phonegap will be ongoing and will eventually be the main focus once all features have been implemented in a desktop browser.
The index.html file contains all of the code being used (or links to it). For testing, use these coordinates (41.0731, 81.5178) -- which is Akron, Ohio.
Currently, Trail Finder uses very basic technologies. It is written in AngularJS, JavaScript, HTML5, and CSS3. It queries data from Google Fusion Tables to populate the map and list of locations. ~There is a Legacy folder that contains old code that either didn't work or was deprecated. The main folder structure contains the root (i.e. index.html) and three folders: CSS, JS, & img. ~
THere is also a folder named "Trailfinder" which contains the Phonegap code/framework with a working version of Trailfinder int it.
Trailfinder now uses Grunt to run tasks (and server).
- Fire up your terminal or command prompt! And change directory to Trailfinder folder, for example:
cd Sites/Trailfinder
- Install necessary Grunt/Node packages via
npm install
from within the root folder (not inside app) cd
to the app folder, then install the Bower packages viabower install
.- Once all packages are installed, you ready to run the project/server.
- You can run the server via the simple command:
grunt
which will compile all sass and also offers live reload if files change. - Once you are done, you can terminate the server by pressing CTRL+C
Please let me know if you have issues running!
The API can call any number of fields from the Fusion Table and place those fields at a specified location. The most basic setup is "Name" and "Location". "Location" is a set of coordinates (i.e. 41.0731, 81.5178).
Currently the only developer working on this project is me, James Mosier. Anyone who wants to contribute ideas, code, or help, just shoot me a message or request.
James D. Mosier - [email protected] - www.jamesdmosier.com
Original work Copyright (c) 2013 James D. Mosier
Please read the LICENSE.txt for all copyright and licensing information.
Also note that I do not take credit for any of the libraries, frameworks, or resources used within this application that I have specified above in the Libraries Used section. They the sole work of their authors and I am using them as intended by the licenses specified by those owners.