The other day I was looking at the bookstore for a Street Guide for DuPage County, IL since my girlfriend is living there and needs a detailed street map. Unfortunately, the only one that they had that was close was one for Cook County (like this one), which doesn't include any of DuPage County. Being the computer savvy person I am, I decided I could just as easily make one using Google Maps and a couple other computer programs.
Note: this project makes use of Google Maps content and I believe I have given directions that still allow this project to fall under the umbrella of "fair use." I'm no lawyer but assuming you don't go selling these I think this should be legal.
Step 1: Necessary Programs
I used the following programs to complete this task. Some of these aren't open source programs, unfortunately, and may not be accessible for many so I have included an open source alternative if applicable.
- Firefox internet browser (needed to use an Addon)
- Adobe Photoshop (or the GIMP)
- Microsoft Word (or OpenOffice)
- Microsoft Excel (OpenOffice has an alternative as well)
Step 2: Materials & Tools
For this you will need the following materials:
- White paper (regular 20 lb. will work, but heavy 24 or 32 lb. will last longer)
- (2) sheets of white card stock (64 lb. paper - again, 20 lb. will work but be less durable)
- Laminating film (optional)
You will also need these tools:
- Printer (color is best but black & white will work)
- Laminating machine (optional)
- Scissors (if you laminated)
** A note on the printer - some older laser printers do a horrible job of printing images (I have an old HP Laserjet 1100 that is awful at it - prints text like a charm though). If you've had the printer long enough, I'm sure you know whether or not it handles images well.
** Also, you can have this printed and bound at a Fedex Office store or similar if you don't want to worry about that part. It'll cost you though. Color copies aren't cheap.
Step 3: Prepare the Map
I had done this process before the hard way - that is, using Print Screen off of Google Maps, pasting into Photoshop, cropping, and repasting into the large map file over, and over, and over, and over until I filled up the entire bitmap. Lucky for me I found this Answer on Instructables that pointed me to a nifty little video that illustrated the following trick that takes advantage of the Google Maps Embed function.
First you'll need to download and install a Firefox Addon called Screengrab. You'll have to restart the browser for it to fully install so go ahead and do that. I'll be here when you get back.
(I have also recently discovered a program called "Google Map Buddy" that does the next couple steps for you but haven't tried it).
Back? Ok, now navigate over to Google Maps and center the map at a point that is convenient for you (your house, apartment, workplace, etc.). Adjust the zoom level to the level of detail you desire. I found the 3rd or 4th lowest zoom to be a good level of detail by showing street names but not wasting too much space with extraneous detail.
Step 4: Obtain the Entire Map
Now, look in the upper right corner of the Google Maps screen. Click on the Link button, which will bring up a menu like the one in the first picture. Copy the contents of the "Paste HTML to embed in website" textbox and paste it into Notepad.
The first line is what we're concerned about. Looking at the image, it has inputs for the map width and height. From experimentation, it seems the largest map size that Screengrab can save is around 7000x7000 pixels so shoot for that. Then go to File->Save As... and change the drop menu to All Files so you can save it as an HTML file (mine was "map.html").
This next step will take a while so be patient. Double-click on your newly created maps.html file and let it load completely. Depending on the speed of your internet connection and your computer, this can take anywhere from a couple minutes to over an hour (if you have dialup, have fun waiting). Then click on the Screengrab icon in the lower right of the screen and do Save...->Complete Page/Frame... and save the PNG file someplace convenient.
Depending on the size of the map you want, you may have to repeat this process a couple times. I know I want mine to be a little larger than 7000 pixels square so I had to do this a few more times.
Step 5: Tweak the Map
Now you should have at least one PNG file captured from Screengrab. Time to clean them up. Open the PNG files in Photoshop and crop off the portions of the screen that have the map directional buttons/zoom and the buttons in the upper right. The copyright information in the lower right and the Google logo must stay on as per the Google Permissions guidelines. Of course, if you remove them I doubt Google will know the difference...
If you need to stitch multiple maps together, change the canvas size by going to Image->Canvas Size... and changing it to whatever value you desire.
Once you're satisfied with the way the map looks, go to Image->Image Size... and uncheck "Resample Image" and change the resolution to 200 pixels/inch. I found that to be a good balance between image quality and readability but depending on the zoom level you chose you might desire to change this value.
Step 6: Slice the Map
Now we're going to use the Slice tool to split the map into chunks that will fit onto normal-sized paper.
Time for a bit of math. My map image is 12216 by 12713 pixels at 200 ppi. If I want the image in the printed map to be 7.5" by 10.5" at the same resolution, I need to make slices that are (7.5 x 200) by (10.5 x 200) pixels, or 1500 by 2100 pixels. Taking 12216 / 1500 = 8.14 and 12713 / 2100 = 6.05. Since these numbers are so close to 8 and 6, I decided to crop the map image down to 12000 by 12600 to fit exactly 8 by 6 slices.
Next I split the original map image into four even pieces, each 6000 by 6300, and saved the four individual files. You will see why in the Step 7.
On each fourth of the map, I split the image into 4 vertical and 3 horizontal slices. Save after doing this and go on to the next step.
Step 7: Save Each Slice
This is the part of the project where having a computer with beefy hardware is definitely a plus and having an adequately-sized scratch file is a must.
In order to save each individual slice we unfortunately have to go through the "Save for Web & Devices" save option. This is great for smaller image files like one might use for webpage design but slow for large image files. This is why I split my original map into 4 pieces. I was getting memory errors trying to save the entire 50MB map file into slices and it went much easier with the four separate map pieces.
Anyway, first change to the Slice Select Tool and make sure that all of your individual slices are highlighted in yellow/orange by shift-clicking on them. Then go File->Save for Web & Devices... It will probably give you a warning message that this function is better suited for smaller image files and might result in memory errors and slow performance. Click yes and wait for the entire image to load - it will probably take a few minutes.
Change the save option to PNG-8 as this makes smaller files that still have good quality (settings are shown in the second picture). Make sure that the image size is kept to 100% and then hit Save. In the save box, browse to the folder you want to save the slices to and be sure the "All Slices" drop menu item is selected then click on Save.
I did this for each of the four pieces of map that I split from the original.
Step 8: (Optional) Add the Distance Scale to Each Page - Part 1
By now you should have many individual pages that are ready to be printed off. This next step is completely optional but I feel that a map should have a scale of reference to be complete.
With Google Maps still open and at the same zoom level as you used for your map, take a look in the lower left corner of the map window. There is a scale there. We want to use that scale on each page. Move the map around until that scale has a background of one color behind it, like in the first picture. Then hit Print Screen, go into Photoshop, File->New, Ok, and Paste. This will paste the contents of the clipboard onto the file. Then crop around the scale and zoom in like in the second picture.
Using the Magic Wand tool, change the tolerance to something like 20 and click on the background color, which selects the background. Hit the Delete key to remove it. Then File->Save for Web & Devices and save it as a PNG-8 with the same settings as before.
Step 9: (Optional) Add the Distance Scale to Each Page - Part 2
In this step we will be making a custom Action and then batch processing the pages to add the scale.
Open up one of the pages. Then open the Actions menu in Photoshop and create a new action called "Add Scale" or something like that. It will automatically begin recording so do the following things:
1.) Go to Image->Mode and select RGB Color
2.) Open the scale.png file you just made
3.) Hit Ctrl + A to select all
4.) Hit Ctrl + C to copy
5.) Hit Ctrl + W to close
6.) Hit Ctrl + V to paste into the map page
7.) Shift + V to move the scale to the lower left corner of the map page
8.) Change the blending mode of the scale to Multiply
9.) Ctrl + Shift + Alt + S to save for web as PNG
10.) Ctrl + W to close
Then hit the stop button on the Actions window. You now have an Action saved that will automate the addition of the scale into each page when we now batch process.
Now, close all the windows in Photoshop and go to File->Automate->Batch... This will bring up the Batch menu with a set of options. Make sure the Action you just created is selected in the first drop menu. Then change the source folder to that of your map pages. Then change the destination folder to wherever you want to save the output files. Also change the naming conventions to whatever you see fit. Then hit Ok and the batch command will do its thing, leaving you with a scale on every page!
Step 10: Import to Word and Reorganize
Open up a Word document and change the margin size to 0.25" top and bottom, 0.4" left and 0.6" right. Then change the drop menu on Multiple pages to "Mirror margins" to keep the margins the same when printing double-sided. Keep the orientation as portrait.
Now for this next part, think back to the map books you've seen in the past. If you look on the back page they usually have the map area sectioned off into numbered boxes that coincide with the page number of that section. This is what we're going to do now.
However, if, like me, you had split your original map into separate pieces before slicing it, you'll have to do some fanangling to get the order of the images right. You'll need to take the top row of the top left piece, add them to the Word file, then the top row of the top right piece, then the second row of the top left piece, and so on. This way the map pages are all left to right and top to bottom.
That done, now add page numbers to the map pages. To do this (assuming you want to print this double-sided) follow this procedure:
1.) Insert->Page Number->Page Margin->Vertical Right
2.) Change the Header/Footer distance to 0"
3.) Check "Different Odd & Even Pages"
4.) Click in the Header space of the second page
5.) Insert->Page Number->Page Margin->Vertical Left
6.) Close Header and Footer
Now every page has a number and when you print it double-sided, the page numbers will be on the outside of the page.
Go ahead and do File->Print and print it to PDFCreator. Now the map pieces are all compiled, numbered, and ready to print to paper.
Step 11: Create Map Index Page
Now is when we create the back cover of the map that has numbered boxes corresponding to each page in the map book.
Go back to the Google Maps view and zoom out a bit. For me, I found that zooming out three times was good. Then do again like we did in Step 3 but make the image size something like 3000 by 3000 pixels. Then go into Photoshop and crop it down to the same boundaries as the original large map.
You might be wondering why we used a new image for the Index instead of just using the large size map. The reason is that the large size map is too detailed, whereas we only need minimal detail in the Index. It should really only show things like cities, highway names, and major landmarks. In reality, even at the zoom level I chose for mine there is too much detail but if I had gone smaller the resolution would have been too small for a quality print.
Now create a new layer (you might have to change the Mode to RGB if you're opening a PNG). Use the brush tool to and shift-click to draw a straight line from the top of the image to the bottom. Then make another new layer and make a line from left to right.
Now go Image->Image Size and take a look at the dimensions of the image in inches. Mine is 21.233" by 22.108" and I need to put lines splitting the image into 8 pieces horizontally and 6 pieces vertically, so every 21.233 / 8 = 2.654" by 22.108 / 6 = 3.685" should be an intersection. Go to View-> New Guide... and make a new vertical guide at 2.654". Then make a new guide at double that, a third guide at triple that, and so on. Do the same for the horizontal guides but use the 3.685" as a spacing instead. Copy those lines you just drew and move them to the guide lines. Then go View->Clear Guides to get rid of them.
This next part is tedious and there's really no quick way to do it that I've found. Make a new group called "Numbers" and make a new layer in the group. Use the text tool and type a number 1 in the upper left box. Adjust the font type and size to something you find desirable. Then copy that layer (Ctrl + J) as any times as you have boxes in the first row, move the text boxes to different boxes, and change the numbers accordingly. Then copy the Numbers group as many times as you have rows, move the group, and change those numbers. Then do Save for Web and save it again as a PNG.
Step 12: (Optional) Make Highlight Pages
Most map books like this one have sections where they highlight areas of the map that truly need more detail to be viewed properly. Unfortunately, the trick we went over in Step 4 doesn't work as well here - when you use the embed code, it removes all the names for the businesses on the map and only seems to show the government buildings. A small annoyance but fairly easy to surmount.
Instead of adjusting the embed code, we're just going to have to do some cutting and pasting in Photoshop.
First, zoom to the level of detail you want in your highlight page. I find the second or third lowest zoom to be good. Next , be sure you click on the arrow to minimize the sidebar and give yourself the greatest map area visible on-screen (see the first image). Then hit Print Screen to capture an image of the entire monitor screen.
For this next part, you can either make another Action or do it the manual way. Since I went over making an Action in Step 8, I'll just show the individual things I do recording the Action.
0.) Make a new file that's about 500 pixels wider and taller than your typical map page (mine were 1500 by 2100 pixels so I made it 2000 by 2600) and make sure you set the resolution to 200 ppi.
1.) Make the new Action, call it "Google Maps Crop' or something like that - recording should start
2.) Ctrl + N
3.) Ctrl + V
4.) Use the Marquee tool to select the area of the map you want to crop
5.) Ctrl + C
6.) Ctrl + W
(the screen should now be focused on the new file you made in step 0)
7.) Ctrl + V
8.) Stop Recording
Then it's a simple task of moving the different parts so they all line up, crop the image to the right size (1500 by 2100 in my case), and saving as a PNG.
Also, don't forget to add the scale like in Step 8, if you want to.
When you add these to the Word file, be sure to add a Text Box that labels the highlighted area. That can be found under Insert->Text Box. Do this instead of typing text normally since you can move the Text Box anywhere on the page without messing up the map piece alignment.
Step 13: (Optional) Create a Table of Contents
Since you now have a map index page that will point you to a specific page, this step can be viewed as optional. However, I feel that it would be beneficial to have a page that indexes all the cities and towns in the map as well as other points of interest, such as mass transit stops, hospitals, shopping centers, and others.
For this page I just made a new Word document, went to Page Layout->Columns and made it a two column page. From here I made a new Excel document with different headers that listed the item followed by a page number. This way I can go back later and sort alphabetically. Then I just cut and paste from Excel into Word and fiddled with the table width and borders to make it look nice. See the image for an example.
This involves some searching through the map pages and at least an hour or two of time but I think it's worth it.
Step 14: Create the Cover Page
For the cover page, have some fun and be creative. I won't tell you exactly what to do but I will give some guidelines:
1.) Keep the resolution to something that will look good printed (i.e., at least 200 ppi)
2.) Be sure to include the area name and the state of the map subject
3.) A date of creation might not be a bad idea
4.) If you need more ideas, consult this product or similar
Below is my cover, just to give you an idea.
Step 15: Print It
For this map to really work well and be the easiest to use, color printing is definitely the way to go. Yes, it is expensive and yes, you can probably print for free in black & white at your school/workplace/where ever but you don't want your hours of work put into this to be wasted by a shoddy grayscale print, do you?
My school does color prints for $0.30 (eesh!) which is the way I ended up going since it was the most convenient for me. Other places like Fedex Office or other print shops might be less expensive but it really depends.
As for paper type, I would go with a heavy cardstock (64 lb is a good pick) for the front and back covers and maybe 24 lb. or 32 lb. for the inside pages. Regular 20 lb. laser printer paper would be fine for the entire thing but it won't be as durable.
Also, if you have access to a laminating machine, it would be prudent to laminate the finished front and back covers. They'll last that much longer if you do.
Step 16: Bind It
For this step you have a couple options.
For the cleanest looking, most versatile, and most useful binding option, I would coil bind it. This way, it can be opened up like a notebook and laid completely flat. Also, I feel like these types of bindings last longer than other options. Fedex Office does this service, for a fee.
For the easiest, simply three-hole punch it and put it in a binder, or even with binding rings. Binders are pretty hardy but can take up a lot of room. Binding rings are quick and cheap but will undoubtedly tear out very easily.
Many of you may also be familiar with Cerlox or comb binding. I think most schools have one of these machines and you can usually do it for free. I know every school I've been to from kindergarten to college has had one.
You could always bind it like a booklet with the pages folded in the middle or sewn. This is probably the most labor-intensive of the options and a little overkill for this project, in my opinion.
Step 17: Finished!
Hopefully everything went smoothly with the binding and you now have a finished map book! Give yourself a pat on the back and go try to get lost - just don't go beyond the boundaries of your map and you should be able to find your way back.
The total cost for this project for me was $21.30, with $17.10 of that being the color copies. I was fortunate enough to get the paper and laminations for free at my school and the coil binding cost $4.20. This price compares to what you would spend on a professional product like the Cook County map I mentioned previously.
If anyone is interested in a PDF of the DuPage County Street Guide I made, send me a PM. It's a little too big to post with the Instructable.