Planning a long bicycle ride? Use Tailwinds to
- draw your route
- instantly see where (and how big) the climbs are
- get turn-by-turn directions
- check weather and wind conditions for your ride
Tailwinds consumes data from the following services. If the listed limitations prove untenable, I've also listed alternative data sources. Eventually, it'd be nice to make these data sources interchangeable.
- Google Maps v3 API for slippy map, markers, and polyline.
- limited to 25000 map loads per day.
- Google Maps v3 API Documentation
- Alternatives: OpenLayers, OpenStreetMap, MapQuest API, Leaflet.js
- Google Directions API for turn-by-turn bicycling directions.
- Limited to routes with 8 or fewer waypoints + origin & destination.
- Refuses to give bicycle directions across international boundaries.
- Google Directions API Documentation
- Alternative: http://developer.mapquest.com/web/products/open/directions-service
- Interesting reading on routing engines: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm, http://algo2.iti.kit.edu/schultes/hwy/schultes_diss.pdf, http://www.youtube.com/watch?v=-0ErpE8tQbw
- Google Elevation API for elevation data along polyline.
- Limited to 2500 requests per day.
- Google Elevation API Documentation
- Alternatives: USA National Elevation Dataset (NED), GeoNames Bulk Address Geocoder
- Weather Underground API for current and forecasted weather conditions along route.
- 500 requests per day, capped at 10 requests per minute
- Weather Underground API Documentation
- Alternative: OpenWeatherMap API
Tailwinds uses the following JavaScript libraries:
- D3.js for drawing the elevation profile.
- Alternative: Google Chart API
- Zepto.js for DOM manipulation.
- Alternative: jQuery, or native code, or using D3's DOM manipulation helper functions.
- Underscore.js
- Alternative: create a smaller build with only the functions I'm using in it.
The following are useful reading for now, and will be removed prior to beta release.