Yet another quick update!

I fancied up the elevation profile by adding a marker on the map so you can see exactly where that monster hill is. Now when your mouse is over the elevation profile that green marker shows up on the map to tell where on the map that elevation corresponds to. When your mouse leaves the elevation profile the marker disappears.

I also fixed a bug that occurred when a set of directions couldn’t be calculated for what ever reason. Now when the error is permnent, like requesting bikeing directions from Seattle to Paris, an alert will pop-up and the offending marker will be removed. If the error is temporary, like gremlins ate the directions, they will automatically be re-requested. This should be invisible. It’s a hard bug to work on though because I can’t get a reliable source of Gremlins. If you see weird errors in the map; such as the wrong routes get deleted when you click on a marker; leave me a comment so I can investigate further.

It’s been a long time since I last looked at the site. Recently I got back into the swing of doing some updates and I want to give a quick rundown of the changes.

The most noticeable update can be seen on the Route Index page. I beefed up the index by adding the route description, author, and thumbnail to the index. I think it looks a lot better than it used to. The route author in the index is a link which will take you to a listing of routes by that author. Right now you will notice there are a lot of routes with the author “None.” The method I was using to save the authorship broke when I updated the page theme a while back. I’ve fixed that so routes created in the future will have the correct authorship.

I also fixed a bug dealing with loading routes outside of the countries where bike maps are supported. The bike maps wouldn’t load correctly because they weren’t being plotted with the plain directions. I’ve got that under control now so they should work as expected. If you find problems with the routes not loading try refreshing the page once or twice then contact me if it still doesn’t work.

Lastly, I’ve been doing some server side work as well. You will notice that the URL for the routes have changed from to . This is a prelude to the next major update I’m working on. A lot of it will be under the hood things which will make sharing the routes on facebook or twitter easier and better. I think now is a good time to get that locked down because the season is approaching and I’d like to be able to share my routes with my friends. I [i]might[/i] even make a facebook or mobile app. I’ve never developed anything for those platforms so right now it’s a long shot.

You may have noticed that the elevation profile wasn’t showing up properly. The path used to calculate the elevation profile was only the last segment of the route. This was a hold over from the last big update where the route length limit was erased. Now the elevation profile is calculated over the course of the entire route.

In itself this update doesn’t really merit a post. I’m making the post because I wanted to point out the limitations of the elevation service. The elevation is calculated from 500 points equally spaced along your route. If the the points are very close and the profile will be very accurate. If the the points will be spread out and the route will be inaccurate.

According to signal detection theory you must sample twice as fast as the signal you are trying to measure. In other words, if you want to find the height of the peak of a hill you will need to take elevations that are separated by only half the width of the peak. So if the peak of the hill is only 50 feet across you will need to take elevation measurements every 25 feet. Given that there are at max 500 elevations taken from a route, that route will be only 2.367 miles long. This example may be a bit extreme but it illustrates how the elevations can be inaccurate.

Keep this in mind when bragging to friends. You can always say the hills were even taller because the app missed the true peak of the hill.

It’s been a long while since I coded something for the site. The other day in Bellingham was pretty cloudy so I started working on getting rid of the waypoint limit. Today I finally updated the site software so there is no longer a limit on the number of waypoints!

I got around the limit by chopping the route into sections and manipulating the sections individually. Prior to this I would recalculate the entire route if anything was changed. This also makes the directions results a bit better. In the prior version the route was calculated all at once and Google’s bike route finding algorithm would sometimes produce weird results. I don’t know why this was happening but I have a feeling that it was some effort to avoid bad streets for riding on and keep a forward direction. Now if you see weird routing going on you can just force the route by adding extra markers.

Even though I got this working really well there is still a couple of big bugs in the program. Most importantly the maps can’t be printed well. It has to do with the way that the map is displayed by the API so I can’t fix the problem. I can convert the printable maps to static images to get around the problem. I may do that, I’m not sure. Secondly adding pages to loop routes is pretty tough. When ever a route crosses out of and back into a page the app has difficulty with that. Especially if the route start and end points are in the page. I’m not sure how I’ll fix that guy but I am aware of the problem.

The weather up here in beautiful Bellingham, WA has turned really nice so I’ve been finding more and more reasons to get out and enjoy it. That means I’ve been working on the site a lot less lately. I did make a small bug fix a while ago that I just got around to posting.

Prior to the update saving routes in outside of the USA using the Members Only Map Creator would result in an error when one tried to load the route. The error had to do with loading biking directions in countries where it isn’t supported.

I also cleaned up the save message. Now the message is displayed with an infowindow on the map. The infowindow includes a success/failure message and a link to the newly created map. In the future I plan to make some sort of sharing happen from that window.

I’m not sure when I’ll get around to working on the site some more. I’ve got a few ideas kicking around but I’m also waiting for Google to fix some bugs on their end too. Specifically the 10 way-point limit and a printing bug. I haven’t mentioned the printing bug before. I just discovered it this weekend when I went to print out a route. The map now shows up as a background picture so most printers default to ignore the map when printing. I’ve read that you can get around this by changing some settings in the print dialog. While it probably works it isn’t a real solution.

I finally decided to add support for creating maps outside of the US. I heard feedback from a couple of users who wanted to use the program for routes outside of the US but were unable to. Today I found time to tackle the problem. The problem arose when I moved to the latest and greatest version of Google’s Maps API. I wrote the program so that it defaulted to using bicycling directions. Unfortunately this is only works for routes in the US, bicycling directions are not available internationally.

In effect this rolls back the directions to how the site used to function. The app asks Google for driving directions which avoid highways. The change in directions only occurs when the app asks for directions. If a route is already plotted you will need to change it slightly to get the new directions. This produces routes that are optimized for time and distance. The distance optimization is fine for cyclists but the time is not. The time is calculated using the assumption that one is driving a car so high speed roads are favored. This will create routes on roads that are undesirable for cycling. On the other hand, if you are a hardcore road rider this may work better for your routes. It will avoid all trails and put you on roads with the least amount of stops. I personally favor roads over trails but I have a good set of mental blinders for heavy traffic.

Lastly I’d like to thank April and Condor for the heads up about the problem. So go try out the new option and let me know what you think!

In honor of the newly added elevation profile I thought I’d post my in-town hill ride. I rode this several times last year in preparation for the . It’s a short ride that climbs every major hill in town. It’s not easy and it’s only fun if you enjoy masochistic cycling. Click ‘Print’ to see just how high and how steep those hills are!
Read the rest of this entry »

I just made another update to the bike map creator!

Elevation Profile: This is what happens when I don't have any good videos to watch on my computer.

I was thinking about using Google’s elevation service today so after work I checked it out. As it turns out it’s pretty easy to use. So after about 30 min. of tinkering I got elevation routes enabled! They show up when you move to print mode next to the overview of the route. Currently they don’t have a distance scale but I’ll add that in soon.

I’d also like change some of the behavior of the elevation profile as well. Currently you can click on the profile and it will tell you the exact elevation of that point. I’d like that point to also get highlighted on the map as well. I don’t know if this is even possible but if it is I’ll make it happen.

Hope you enjoy the new function!

This is another one of my favorite local rides. It’s a flat easy ride that comes in at about 30 miles. Sometimes I’ll go out Marine Dr. instead of Northwest Dr. to make it quicker. All of the roads on this bike map are fairly untraveled but the speed limit may be fairly high. The road conditions are fine though. Somewhere on the east side of Lummi Nation past Cagey Rd. and before the road gets away from the coast I’ve encountered a pack of dogs that give a good chase when I ride by. I’ve never been bit but the dogs seem serious so I’ve never slowed to find out. I’d reserve some extra speed for that leg of the ride.

Read the rest of this entry »

I got the idea to write this post after experiencing the awesomeness that is the bike maps update that Google rolled out the other day. I love the update, route creation is super easy compared to what it was and I’m working on assimilating those same changes into my web app. That said there is still one aspect where Google bike maps is lacking when compared to Ride Free Bike Maps and that is how the maps are displayed when printed.

I’ll back up a second and talk about why this matters. For an everyday rides getting to a destination, say a seaside park, you probably don’t need a map. If you don’t know the best way to get there looking it up online may be all you need. That all goes out the window when you want to ride someplace you haven’t been. A friend of mine posted this on one of my online updates: “You need a map to ride a bike? Ok…” I responded with a link to one of my experiments with the new Google bike maps, . I’ve ridden that. The maps I carried were absolutely essential to the ride. I had to know where I could stop to eat which I did, ravenously, every 15 miles. A more common use would be to create a map for a shorter in town ride, say riding around Lake Samish from Bellingham. In the end you may not need a map but when you do it can make a big difference.

On to the comparison!

This is a scan of the printed Google maps we all know and love. It gives directions, step by step, and allows you to add in small maps of every turn. In this map I plotted directions from Seattle, WA to Bellingham, WA. These first few turns are all in downtown Seattle. There is a lot of traffic down there and you have to be on top of making all those turns. Doing this with a print out of from isn’t going to be easy. The space that a cyclist has to display a map isn’t very big. My map holder measures about 9 X 5 inches (23 x 13 cm for those of you who use civilized units). Those dimensions are about what is pictured to the left except for the section with distances. So if you slid those directions in your map holder you’d have to stop after 4 miles and change maps. I can live with that when you are riding in the city. Directions get more complicated and you really need those maps just in case you get turned around. However! There were only two map panels in the Google page. I could have added more but then I’d get a lot less directions on a single page. Using one map for multiple turns isn’t really great either because they are so small and you can’t see that much in them. You need something better if you are going to be using it in the saddle.

From the first line of code on, I built the Ride Free Bike Map Creator to be used in a printed form. The first thing I did was figure out the conversion rate of pixels on the screen to inches on the page (96 dpi) because that was most important to me. The second thing I did was get rid of most of the elements in the page that didn’t need to be printed (I know there are ads on the top, I’m gonna fix that soon). The whole design of the app revolves around that black rectangle that encloses the maps when printed. I could have made the map bigger in the non-printing stages of route creation. It would have made it a lot easier and faster to create way points. I didn’t end up going that route because I want users to think about how the map will ultimately be used in a printed form.

On that note let’s get into the features of my maps that work well with the printed form. The first page of every route is an overview of the entire route. Ultimately I want to use the blank space on the side for statistics about the route. I’m not super worried about it right now because I’m working on some more fundamental aspects of the app. Note the 9 x 5 size, fits perfectly in a Bike Map Holder! Wow! Note I printed using the traditional ‘portrait’ orientation of the page. This actually scales down the size of the maps. If you print in ‘landscape’ mode they will be printed full size.

Below the route overview the map shows about one mile of travling city streets in Seattle. My maps have a viewpoint that allows you to see your route and surrounding the area. The only limit on detail is how much you zoom the map. I designed my app this way so you could get back on route if you ever made a wrong turn or missed a turn. On the right side of the page I’ve got all the turns spelled out with the distance to the turn from the beginning of the page. That way you know when a turn is coming in two forms, distance and pictorially. The last distance on the page is the distance to the end of the page from the beginning. That allows you to reset your distance measurements when you change to a new page.

The last picture shows a page I created where the route goes into a long stretch of no turns. I printed this just to show the compromise of detail in action. You can see that this page shows 16 miles of the route. It runs from north Seattle to north Lynnwood, all of it along hwy 99. I opted for this view because I didn’t want to waste paper by printing a lot of pages just to ride a small distance. At the same time I still wanted a bit of detail because I’d be riding through the city.

When it comes down to it, this site is an add-on to Google maps. I’ve taken data from Google and massaged it into a form that is much more useful to cyclists. There isn’t anything unique about this data. That’s the whole point. Maps as content are public knowledge. What a good map does is take several sets of data, say street names, street locations, mileage, and combines them into pictorial representations with a high degree of usefulness. My aim with this site/app is to do just that.