Tutorial: How to make a raster (jpg) Custom Map

Some of you may remember I made a similar thread about this a couple years ago. After a couple years of playing around with it, I'm finally happy with my method of creating a Custom Map on my Epix. So I've decided to document the process I used, to hopefully help others, but also to help myself remember in a year when I have to do it again Smiley

Tools needed:

  1. An image editor (I used Adobe Photoshop for this tutorial)
  2. Google Earth Pro
  3. PC or any computer that can view the watch as a drive

For this tutorial, I made a custom map of a theme park. You can skip some of the steps I did because they won't necessarily apply to your map, depending on what it is. This theme park, who I won't mention by name because they like to chase people for copyright nonsense (but you can probably deduce from the images), has a very nicely detailed, artist drawn, scale park map available on their mobile app:

It's driven by Google maps, so you can pan and zoom around on it like a normal map. I zoomed in on the top left area of the park, snapped a screenshot, panned over and snapped another, and did this about 40 more times until I had pretty detailed screenshots of the whole park. Then I started a new 10,000x16,000 pixel canvas in Photoshop, and began cropping, pasting, and positioning all my tiles to create one very large, very detailed 10000x16000 pixel jpeg of the whole park.

A limitation of Garmin custom maps is that you must make tiles that are no larger than 1 megapixel (1000x1000 pixels), or else the watch will massively degrade the image quality when it renders them. Seeing as my image is 16000x10000, that would mean I would have to break it into 160 tiles, which is a lot of work to deal with in the next steps, so I decided to halve the image size to make it a more manageable 8000x5000 pixels, for 40 tiles.

Once you're happy with the layout of all your tiles, flatten the image to make it a single large layer. In photoshop, go to Layer > Flatten Image.

Save the file as "(project name) Original Image".

Making the High-res 1000x1000 tiles

Save the file again as "(project name) High-Res Tiles", so as to not overwrite the original source imagery that we'll use again later.

Photoshop makes this part pretty fast and easy. The first step is to create a grid of guidelines. Go to View > Guides > New Guide Layout, set the column width and row height both to 1000px, enter the number of columns (image width / 1000, rounded down) and number of rows (image height / 1000, rounded down), make sure the Gutter is set to 0 for both, and press OK.

Now we need to slice the image into tiles. Use the Slice tool from the sidebar, and click and hold near any corner of the top left grid square, drag near the opposite corner, and release. Slice 1 is done. Now repeat that for all the remaining grid squares. The grid of guidelines makes the mouse cursor "snap" to them, so you can ensure all your slices are exactly at 1000px intervals.

Now we need to export the tiles as individual JPG files. In Photoshop, go to File > Export > Save For Web (Legacy). Use the +/- buttons to zoom out to the whole map, make sure the slice selection tool is selected near the top left, and click and drag the mouse across the whole image to select all of the slices.

Change the Format to JPEG, set the quality to 100, and make sure "Progressive" is NOT checked! If Progressive is turned on, the images will not work! Press the Save button, choose where to save the images to, name them "high res", and press OK or Save.

There will now be a new folder, wherever you saved the tiles to, called "images", which is where the new JPG files can be found.

Making the medium-res and low-res 1000x1000 tiles

You've now finished making the high-res tiles for your custom map, but there's a problem! The images are TOO high-res for the watch to handle at any zoom level further out than 50 feet (15m) map scale, making it almost useless. We need to make medium resolution and low-resolution tiles, too, so that the watch can render the images when zoomed out further.

Close the High res image, and reopen the original image we saved earlier. Resize the image to 50%, and then repeat the same process as before with making the grid of guidelines, slicing the image, and exporting JPG's, making sure to name them "medium res". Then close the file, reopen the original image once again, and resize it to 12.5%, and repeat once again, naming the tiles "low res".

Configuring Google Earth Pro

Go to Tools > Options, and open the Navigation tab. Turn on "Do not automatically tilt while zooming", and press OK.

Pan/zoom to the general area where you want to make your map.

Reset your tilt to 90 degrees (looking straight down), and press the N on the compass to re-align the map North.

Making the High-res KMZ file in Google Earth Pro

This is the most arduous part, because you'll need to place each tile individually on the google earth map, one at a time, hand-resizing and positioning each one of them. That's why I resized my original map so that it only made 40 tiles, because doing this 160 times would have taken many, many hours.

Right-click on My Places in the sidebar > Add > Folder. Name it "(project name) High-Res". With this new folder selected, go to Add > Image Overlay. Name it something like "(Project Name) 01" and browse for the first high res tile. Use the green guidelines to move and resize the image to overlay it where it needs to go on the map. You can use the Transparency slider to help with lining things up.

Click on the Altitude tab, make sure the altitude is "clamped to ground", and set the Draw Order to 99, which will ensure that this will always be the top layer shown, unless it can't be rendered because you've zoomed out too far.

Return the transparency to 100% if it isn't already, and press OK when you're happy with the placement.

Repeat this process for all the rest of your High Res tiles.

Making the Medium-Res and Low-Res KMZ files in Google Earth Pro

In the sidebar, uncheck the checkbox next to your high-res tile folder, to hide it on the map. Make a new folder in My Place for you medium-res tiles, and then repeat the same process of adding image overlays, positioning and resizing them, except this time make the Draw Order 89. Then turn the Medium-res folder off, make a low-res folder, and do it again for low-res tiles, making those tiles have Draw Order 79.

The draw order numbers I chose are somewhat arbitrary, they key thing is that the numbers must be > 50 to draw on top of the other garmin maps, with the high-res tiles being a higher draw order, and the low-res being a lower draw order. This causes the map to always prioritize displaying the high-res tiles when it can, and if it can't display those at the current zoom level then it'll try to display the medium-res tiles, and if it can't display those either then finally it'll try to display the low-res tiles.

Exporting the KMZ files to the watch

This is the easiest part! Right-click on the high-res tile folder, click "Save Place As", and name it something like "(project name) High-Res.KMZ", and press save. Repeat for the medium-res and low-res folders.

Now, plug in your watch and open it in the file explorer, browse to the "Garmin" > "Custom Maps" folder. Copy your 3 KMZ files, and paste them into the "Custom Maps" folder on the watch.

And you're done!

Using the Custom Map on your watch

The custom maps should be enabled by default when you first add them to the watch, but you can turn them on or off in the global or activity map settings.

Unlike Birdseye JNX imagery, the Custom Maps will not show up at all zoom levels. But with 3 different resolutions of imagery loaded into the watch, you'll be able to see very fine detail zoomed all the way in as far as it'll go, and in my experience I can at least zoom out to 300ft (100m) map scale and still see the map. Zooming out further to 500ft makes them disappear for me, but your results may vary.

It may also be helpful to turn off the Topoactive maps if you don't want to see any roads, icons, or labels on top of your beautiful new Custom Map.

Example screenshots:

At 300ft map scale

At 120ft map scale:

At 50ft map scale:

At 20ft map scale:

Top Replies

All Replies

  • If anyone wants a copy of the KMZ files I created for this tutorial, which can be readily copied and pasted onto your watch, or viewed in Google Earth, shoot me a message and I'll send you a link.

  • Nice, did you insert the kmz folders or directly all the kmz files into the custom  maps folder?

  • Los archivos KMZ los puedes poner directamente en la carpeta custom maps, pero como máximo 5.

  • Nice, did you insert the kmz folders or directly all the kmz files into the custom  maps folder?

    What you do is export the whole google earth "folder" of image tiles as a single KMZ file, and then paste that one KMZ file into the Custom Maps folder. So for example my whole google earth "folder" of 40 high-res tiles is contained within a single KMZ file.

    My project has 3 KMZ files in total, 1 each for low-res, medium res, and high res. 

    But it's possible that you might be able to cram all 3 resolutions into a single KMZ file, I haven't tried that yet

  • This is awesome! Great work! I'd love a link to the files. 

  • Hi your post emember me this article, from , but with "Garmin BirdsEye Imagery Subscription" which according to the last comments under the article is discontinued.

    https://www.dcrainmaker.com/2022/03/how-to-install-satellite-imagery-on-your-garmin-fenix-or-epix-watch-fenix-5-plus-6-7-epix.html

    ---

    Thanks for sharing your work and the great explanations !!!

    ---

    iacchos

    I confirm !! I use the custom maps for specific (small) areas. My raster files are from Google map (satellite View) or IGN (1:25.000 French area). You produce .KMZ file. I have done this for my F5X, and .KMZ files created years ago work fine on my Epix 2 Slight smile
    And it’s free !!

    https://support.garmin.com/en-US/?faq=cVuMqGHWaM7wTFWMkPNLN9

  • We need to make medium resolution and low-resolution tiles, too

    Thank you for this specific tip. I've done quite a lot of custom maps of orienteering maps to be used on my f5x and f6x. With the epix and now epixpro51, my old maps became useless as you say.

    With more nice pixels on the watch, a map that was visible on 120m map scale now are only visible on 15m. The tip with different resolution custom maps with different draw order is really clever.

    By the way:
    Have you tried the PCapp KMZFactory to see if that can enhance your workflow?
    KMZFactory can slice a kmz file to below 1024x1024 tiles with one click.

    This has been my workflow.

    1. Gimp (free image editor) - to open pdf page and export image file
    2. Google Earth - to georeference and save to kmz file
    3. KMZFactory - to tile the kmz file
    4. File explorer and connected Watch - to copy files to watch

    I think the georef part is the most time-consuming one, so adding more files (with different resolutions) to georef is a burden. I found a solution with 7zip. Then I only need to georef one copy and then just do copies and manipulate them.
    New workflow:

    1. Gimp - to open pdf page and export image file to different scaled sizes/zoom levels
    2. Google Earth - to georeference one of the images to one kmz file
    3. File explorer - to make a copy of the kmz for every zoom level needed
    4. 7Zip - to edit the kmz copies for every zoom level
    5. KMZFactory - to tile the kmz files
    6. File explorer and connected Watch - to copy files to watch
  • I also did some work to try to find what resolution on the image file needs to be used for different watch map scales.

    If I started with a pdf map on an A4 page (approx Letter) with a paper scale of 1:10000.

    I opened it in Gimp with the resolution of 600 px/inch. After cropping borders, that gave me an image with a size of approx 6500x4700 pixels. I scaled that to 75%, 50%, 40%, 30% and 25%.

    My finding was that the:

    • 100% was around 2360 px/km and that was usable between 5m and 50m.
    • 75% - 1770 px/km - 8m and 50m.
    • 50% - 1180 px/km - 12m and 80m.
    • 40% - 944 px/km - 20m and 120m.
    • 30% - 708 px/km - 30m and 120m.
    • 25% - 590 px/km - 50m and 200m.

    The conclusion is that I save the files in 100%, 50% and 30%.

    Edit: sorry, but used the wrong px/km values above. Corrected now.