After several years of trying to use Garmin’s Basecamp tool to plan the layout of caches, I finally got to wondering what else was available, and I started exploring Memory-Map (see Memory-Map). I spent a while doing it, but now I’m finished I really like it.

It’s no good without maps

The first step in any new venture into geocaching applications is to figure out what the maps are like. In Memory-Map’s case, the maps are whatever you buy. You can get a free trial for the UK Ordnance Survey 1:25,000 scale maps. These look much like the OS Explorer “Orange Top” printed maps. I guess the printed maps are just a rendering on paper of the electronic versions. Anyway, these electronic maps have the problem that they are raster maps so they get blurry at fine detail. At the sort of scale you need for planning a geocaching trip (which is wanting to see between 2 and 10 km of map across the width of your screen) the resolution is fine and the maps look lovely.

When your trial period runs out they will sting you for about £100 for the full Great Britain mapping. That’s cheaper than buying the whole country for Garmin Basecamp though, despite being the same thing. They look nice, as you can see in the samples below.

This leads me quite naturally into a discussion about the main weakness of using Memory-Map though. They don’t sell up-to-date maps for very many places apart from Great Britain (the 1:25,000 OS Explorer maps), France (the IGN 1:25,000 map) and the USA (DeLorme 1:24,000 topo maps). There’s a bunch of free ones for much of the world but they aren’t detailed enough for planning caching trips. Coverage of the world seems patchy. I also failed to find any reasonable way of making Memory-Map compatible maps from other inputs like Freizeitkarte. That’s not to say you can’t do it, it’s just to say I’ve not had the patience to do it.

Memory-Map Sample
Memory-Map Sample
Memory-Map Sample

You need some geocaches too

So, moving on, the second thing you need to make a decent geocaching planning tool is a way of uploading shed-loads of geocaches onto the map. In this case I wasn’t quite sure where to go until I stumbled across some documentation on Google about a macro written for GSAK. I use GSAK a lot. The macro outputs content for Memory-Map based on caches stored in GSAK. It was written by rutson and is one of the standard downloadable macros from GSAK on their online macro index. I won’t explain how to get there – if you don’t use GSAK you don’t need to know, and if you do use GSAK you’ll know where it is. It’s in the online list as “rMMe” (rutson’s Memory Map export).

When I tried this the first time it was fully functional, but I had two issues with it :

  • I didn’t like the way it allocated icons to cache types. Some cache types were missing and the selection criterion for various parameters like “Found”, “Archived”, “Owned” and so on didn’t seem to be complete (Yes, I have some caches that I have found and that I now own, and which have corrected coordinates. The macro wouldn’t allow all of those in one icon).
  • I wasn’t particularly keen on the icons. If you’ve seen the post about Garmin Custom Icons you’ll know I like big, bold and clear colours and geometric shapes. They are easily discernible against the background of a busy map.

The way to get rid of these issues, as you would expect, was a bit time-consuming.

Cache Processing

The solution to the first of the two problems is evidently to rewrite the processing macro in GSAK to produce a different range of settings that equated to the items I wished to see. I started off with maintaining rMMe’s approach of marking caches that contain a trackable, but ultimately decided that I generally don’t plan on the basis of whether caches contain a trackable or not, so I decided to ignore that parameter. The things I thought to be important to include in the model were :

  • Found Status – this takes priority over the type of cache, as it does on the Groundspeak website – if I’ve found it, I don’t care what type it was any more. Found caches are always shown as smileys.
  • Cache type – Traditional, Unknown, Multi, Virtual, etc – There’s more different types than you think, so I contented myself with all the key types and then use a bucket “other” type for ones that will never occur frequently enough to be of concern (like “Project APE” and “Lost and Found Celebration”) – I chose to represent the type on the icons by using different colours and letters in a square box.
  • Active Status – is it Active, Disabled or Archived? – I represent this status on the icons by adding a grey diagonal bar for Disabled and a red diagonal bar for Archived, but I didn’t bother with Disabled for a “Found” cache
  • Ownership – For caches I own, I add a small green circle to the bottom right side of each icon, including on smileys. There was no need to create an “Owned” variant for some types, because I’ll never own a Virtual, a Webcam, a GPS Maze, a Mega Event or a Giga Event, for instance.
  • Corrected Coordinates – for types where the cache isn’t at the given coordinates (like Unknown, Multi, Letterbox and WherIGo) I add a small cyan circle at the top right when those corrected coordinates have been added to the cache, and not when it hasn’t. This identifies which caches are available to be found and which need some work (either now or in the field). You can add corrected coordinates to any cache on the Groundspeak site, but it’s meaningless on types other than the four listed here.

More Customisation

Once I’d been through the process of deciding what different icons were needed for each cache, I also included some extra parameters which make the macro more useful for one of my purposes – blogging about historical days out. I often write blog posts well after the actual day. Sometimes that means the caches are in varying states of disrepair or are archived. I therefore included a “Show All Caches as Active” flag, which makes the macro ignore all the settings about status and just forces use of the “Active” variant of each icon. Occasionally I might like to draw a picture of all caches that someone else might see, i.e. ignoring my finds, so I added another flag to perform a “Show All Caches as Unfound” function.

You can update coordinates directly on the Groundspeak website. This isn’t great if the whole point of the trip was to create some GeoArt (see Val D’Oise Madness, for instance). In that instance the Groundspeak website displays found caches at the given coordinates, so GeoArt restores itself. To make Memory-Map do that you have to tell it to. The original coordinates are available in GSAK, but you have to choose to use those rather than the corrected ones. So, I added a “GeoArt Mode” flag, which forces use of the original rather than the corrected coordinates – see the third picture above – the one with the Mickey Mouse ears.

The original rMMe.gsk macro file already had the right structure for performing a loop over all of the displayed caches in GSAK and including an output line for them. It also had a small block for drawing the child waypoints out. This meant that all I had to do was to figure out how to change the core of the module to assign a different set of icons, and to apply the various control flags I wanted. That proved to be fairly easy once I’d read through the example a few times. The structure and meaning was quite apparent and quite simple to understand. Result!

Icons

You can use as many different icons as you can be bothered with creating and programming for. There are some limits to how you do it, but the number can be quite large. The constraints on the icons are as follows :

  • They must be 32×32 pixels in size
  • They must be saved as 256-color bitmaps (.BMP)
  • Pure white (RGB 255.255.255) is treated by Memory-Map as a transparent layer, so if you need something white, pick a light cream colour instead. I found that RGB 255.251.240 gives a decent looking shade

I chose to edit them using MS Paint – it’s easy to use and clear enough for these very simple files. One issue is that MS Paint always allows you to edit in the full 256x256x256 RGB colour-space. It’s a bit of a lottery whether the colours you’re using are actually available in the 256 colour palette (I couldn’t find a reliable source). The way around that is to pick a colour you like, then save the file as a 256-colour file, and then reopen it. MS Paint corrects any colour you’ve used to something that’s compatible with the 256-colour palette.

Somewhere in the configuration for Memory-Map is an entry which determines which pixel in the icon is placed over coordinates. In mine, it’s set to about 16,16 and I drew icons that are about 20 pixels square in size (always at the top right of a 32×32 frame. This means that the icon is mainly to the top-left of the coordinates when you see it in Memory-Map. For caches that are directly on a public footpath that’s advantageous, because the icon mainly covers the whitespace above the path on the map rather than covering the path.

Enough with the chat, how do I use this for myself

Here are the things you need to do to set this up.

There are two downloads here. One contains the GSAK macro, the other contains all the icon and configuration files.

  1. Download and unpack the GSAK macro. Install it in GSAK by taking the Macros -> Run/Manage menu option and then hitting the Install button – this produces another dialog where you can browse to this macro file and upload it
  2. Select a database in GSAK that has some caches in it and then Run the GSAK macro for the first time. This will, amongst other things, hunt for an installed version of Memory Map and create the relevant folders for later use. It installs rutson’s original icons into the directory but doesn’t use them.
  3. Navigate to C:\Users\’Me’\AppData\Roaming\gsak\MemoryMap\icons (where ‘Me’ is the current user) – You should see a bunch of icons and config files. You can delete all of them if you want. rutson’s original version has his icon data embedded in the macro and I didn’t remove this.
  4. Download the .ZIP file with the icons in
  5. Unpack the icons .ZIP into C:\Users\’Me’\AppData\Roaming\gsak\MemoryMap\icons

You’ve now installed everything, so you’re good to go. The key file for this bit of configuration is header.txt – This makes the association between the icon file name and the integer number used to represent it in the Memory-Map upload.

How do I use it?

It’s quite easy. When you run the macro it brings up the dialog below. You can tell I didn’t spend much time tidying it up. I may do that at a later date. The result is that some of rutson’s original features don’t work now (as I didn’t want them).

Key areas of the dialog :

  • At the top left, select the folder to put the output files into. I  create them in the same folder that I keep the icons and input config files.
  • Below that, you can define the name for the output file – it creates a .CSV file. You can use the last name, or the GSAK database name, or choose a custom name.
  • Below this, there’s a number of checkboxes which control the outputs. The names make it fairly obvious what will happen. “Add route?” adds a simple straight-line route from one cache to the next (but as far as I can tell the means of doing this is uncontrollable). “Display Spiders?” shows original and corrected coordinates separately and draws a straight line between the two on a cache-by-cache basis. “Display All as Unfound?” and “Display All as Active?” override the GSAK status for found and active/disabled/archived statuses. “GeoArt Mode?” ignores corrected coordinates and displays caches at the original coordinates (where there’s a difference).
  • On the top right is a group of controls “Links To” which I ignored and don’t use.
  • Below that are three flags to control child waypoints. I removed clutter by suppressing child waypoints if they’re at the same place as a cache. You can also choose to suppress output of children for found caches or for disabled/archived ones.

Hitting the Go button on the dialog takes the selected parameters and creates an output file. It then invokes Memory-Map and uploads the created file.

Quirks

Memory-Map isn’t clever enough to figure out whether there’s already a waypoint with the same name. You’ll get duplicates if you reload the same caches. I’ve noticed this causing some strange behaviours and it certainly clutters the whole shebang. My recommendation is that you should delete all the current caches before you run the GSAK macro.

The Overlay Objects panel in Memory-Map shows the caches grouped by cache type and find status. You can double-click items in the side-panel to get the map to centre on that item.

As a final act, I also figured out what to post into the input file so that you can use Right-Click->Open File to invoke a browser with the cache details in it. It took a couple of attempts to get it right and at the moment it’s kind of hard-coded to my own PC setup. In the original macro it simply tried to post a “http://coord.info/…” string. This doesn’t work because MemoryMap doesn’t know that you use a browser to open an http link. The solution is to change that string so it begins with the full file location of the browser executable file (chrome.exe in my case) followed by “coord.info/GC…” as a parameter to the executable. Works a treat, and if your browser is already open it just starts a new tab. #jobsagoodun

Waivers and Restrictions

The downloads above are, to the best of my knowledge, free of malware. However, I take no responsibility for that. Please scan anything you download (from anywhere, not just from me).

You may make copies whenever and wherever you want. However, if you break it then you own both pieces.

There is no copyright on any of the downloadable material. If you are going to rework it, I would appreciate it if you could credit myself and rutson when you do so. You may not use this material as the basis for a commercial offering. It’s free shareware – please keep it that way.

These materials are for personal use by myself. You use them at your own risk and I don’t provide a helpdesk. I may update the features and repost occasionally. There is no warranty and I take no liability, under any circumstances.