Paperless Geocaching is quite well documented for Memory Map 5 and PDA devices, but times have moved on, so I wanted to see if I could bring it up to date.
Geocaching is a very popular hobby, which combines GPS navigation with treasure hunting. There’s a more thorough explanation on the Geocaching.com website here https://www.geocaching.com/guide/
You can geocache straight from the app, but for better mapping, it’s useful to overlay the geocache locations on to Ordnance Survey mapping.

The software that is most commonly used for OS-mapped geocaching is a combination of GSAK and Memory Map. GSAK is a geocache database management tool, and Memory Map adds the OS mapping. Memory Map v5 and earlier was available for both desktop PCs and Windows PDAs. So, with GSAK, Memory Map and some custom icons, you had the ultimate mobile geocaching setup. You can get the icons for older Memory Map and PDA’s here – http://blog.dixo.net/downloads/lordelphs-lovely-icons/
LordElph’s icons were great with PDA’s and Memory Map 5, but now we’ve moved to the smartphone age, the newest version of the app needs different macros. There are pros and cons to the Android/Apple versions of Memory Map.
Cons
No custom icons.
No PDA support.
Pros
Mobile phone support.
No need to upload maps.
Faster transfer and sync of data.
The biggest of these cons is the fact that there is no longer support for custom icons. That means that we are limited to the default icons such as anchor, dot, man overboard etc. Luckily there is a Geocache icon, however it isn’t ideal that all Geocaches, regardless of type, are the same green box.

So, the default way for GSAK to handle this is that every cache type is given a different icon type. Skulls, flags, car, etc, can all be assigned to Traditional, Multi, Puzzle, etc. I looked into this and wondered if the default Geocache icon could be used for ALL cache types, but the colour could be changed? It seems it can.
I’ve created a BETA macro for GSAK v9, which works for me. Here’s how it looks in action:

It’s clunky because it has to export every cache type individually. So, when you run the macro, if you have four cache types in your filter, it will run four separate exports.
Secondly, it exports based on your User Flag Set. That means that you need to set the GSAK User Flag for the caches you wish to export.
The good news though is that when you sync the GPX to your mobile device, the icons carry over flawlessly.
I’ve found that the best way to transfer GPX files between desktop and mobile device is using WhatsApp Web / Whatsapp Mobile, then opening the file on your phone with Memory Map. Alternatively, you can save the file to Downloads/Memory Map on your phone, but you’ll probably need a file manager to move it. Then you can use MM’s import function. It’s just less hassle using Whatsapp.
Grab the macro here (right click and Save As).
Here’s the macro content. As you can see, there’s a little bit of editing needed to check the Memory Map path, but that should be it. As it’s Beta, I can’t make any promises and I can’t promise to support it going forward, but please comment if it works for you.
#******************************************* # MacVersion = 1.0 # MacDescription = PupPort-Android-Beta # MacAuthor = Mark # MacFileName = PupPort-Android-Beta.gsk # MacUrl = #******************************************* # EDIT THE LINE BELOW if you need to! $MMPATH = "C:\Program Files (x86)\Memory-Map\Navigator-6\MMNav.exe" # That's all you NEED to edit. If you want to delve further, though, then read on BUT in particular please check out the lines towards the end of this file, # In the section at the end titled "<data> VarName=$GPX", the following lines alter the labels and descriptions (hints) on Memory Map---> # edtFormat.Text=%code. %hint. By %By. (%Dif/%Ter) Last Logs:%last4 # edtWaypoint.Text=%name # By editing those two lines, you'll alter how the icons are displayed. # Anyway, let's crack on with the rest of the macro... IF FILEEXISTS($MMPATH) ELSE PAUSE msg="Welcome! Help me find your copy of Memory Map 6 - please edit the macro and alter the line near the top that says MMPATH=" CANCEL ENDIF #We are going to set three variables here - #We set $SAVETO to your GSAK data folder. We'll save your exports here. #We set $MYID to your GC.com ID number. #Then we set $TEMPFILE which is a file we create mid-macro, no need to change the name of this. $SAVETO = Sysinfo("gsakini;TfmConfig;edtDataStore.Text")+"\" $MYID = Sysinfo("gsakini;TfmConfig;EdtGeoName.Text") $TEMPFILE = $SAVETO+"temp.gpx" #Lets set a search within this macro - we'll search for whatever is in your current filter. We'll use it again in MFILTER commands. MACROFLAG Type=SET Range=Filter # Now we do a series of sub-searches to find Found caches, Unavailables, etc, and do an individual export for each one. # We check whether there are any caches in the sub-search. This saves time but more importantly, if there are zero matches, instead of exporting nothing, GSAK decides to export EVERYTHING! # This version of Memory Map is particularly fickle. We need to do a separate export for every cache type! # I did try to do all the RUNPGM commands together at the end, but it seems that Memory Map can't keep up. #Found MFILTER Where=UserFlag MFILTER Where=MACROFLAG Join=AND MFILTER Where=FOUND Join=AND $LOCALEFOUND=$SAVETO+"1-Found.gpx" IF $_FilterCount>0 MACROSET Dialog=GPX VarName=$GPX name=<macro> EXPORT Type=GPX Settings=<macro> File=$TEMPFILE $Round1 = GetFile($TEMPFILE) $Round1a = Replace("</wpt>",$swap1,$Round1) $Round1b = Replace("<sym>Geocache Found","<sym>Geocache",$Round1a) $Data = PutFile($LOCALEFOUND,$Round1a) RUNPGM pgm=$MMPATH parms=$LOCALEFOUND Wait=No Hide=No ELSE ENDIF #Unavail MFILTER Where=UserFlag MFILTER Where=MACROFLAG Join=AND MFILTER Where=STATUS='T' or STATUS='X' Join=AND $LOCALEUN=$SAVETO+"2-Unavailable.gpx" IF $_FilterCount>0 MACROSET Dialog=GPX VarName=$GPX name=<macro> EXPORT Type=GPX Settings=<macro> File=$TEMPFILE $Round2 = GetFile($TEMPFILE) $Round2a = Replace("</wpt>",$swap2,$Round2) $Round2b = Replace("<sym>Geocache","<sym>First_aid",$Round2a) $Data = PutFile($LOCALEUN,$Round2b) RUNPGM pgm=$MMPATH parms=$LOCALEUN Wait=No Hide=No ELSE ENDIF #OtherCacheTypes MFILTER Where=UserFlag MFILTER Where=MACROFLAG Join=AND MFILTER Where=CACHETYPE='A'or CACHETYPE="C" or CACHETYPE="D" or CACHETYPE="E" or CACHETYPE="F" or CACHETYPE="G" or CACHETYPE="H" or CACHETYPE="I" or CACHETYPE="L" or CACHETYPE="O" or CACHETYPE="P" or CACHETYPE="Q" or CACHETYPE="R" or CACHETYPE="U" or CACHETYPE="V" or CACHETYPE="W" or CACHETYPE="Y" or CACHETYPE="Z" Join=AND MFILTER Where=STATUS='A' Join=AND $LOCALEOTHER=$SAVETO+"3-Other.gpx" IF $_FilterCount>0 MACROSET Dialog=GPX VarName=$GPX name=<macro> EXPORT Type=GPX Settings=<macro> File=$TEMPFILE $Round3 = GetFile($TEMPFILE) $Round3a = Replace("</wpt>",$swap3,$Round3) $Data = PutFile($LOCALEOTHER,$Round3a) RUNPGM pgm=$MMPATH parms=$LOCALEOTHER Wait=No Hide=No ELSE ENDIF #Owned MFILTER Where=UserFlag MFILTER Where=MACROFLAG Join=AND MFILTER Where=OwnerID=$MYID Join=AND $LOCALEOWNED=$SAVETO+"4-Owned.gpx" IF $_FilterCount>0 MACROSET Dialog=GPX VarName=$GPX name=<macro> EXPORT Type=GPX Settings=<macro> File=$TEMPFILE $Round4 = GetFile($TEMPFILE) $Round4a = Replace("</wpt>",$swap4,$Round4) $Round4b = Replace("<sym>Geocache","<sym>Person",$Round4a) $Data = PutFile($LOCALEOWNED,$Round4b) RUNPGM pgm=$MMPATH parms=$LOCALEOWNED Wait=No Hide=No ELSE ENDIF #Trad MFILTER Where=UserFlag MFILTER Where=MACROFLAG Join=AND MFILTER Where=CACHETYPE='T' Join=AND MFILTER Where=STATUS='A' Join=AND $LOCALETRAD=$SAVETO+"5-Trad.gpx" IF $_FilterCount>0 MACROSET Dialog=GPX VarName=$GPX name=<macro> EXPORT Type=GPX Settings=<macro> File=$TEMPFILE $Round5 = GetFile($TEMPFILE) $Round5a = Replace("</wpt>",$swap5,$Round5) $Data = PutFile($LOCALETRAD,$Round5a) RUNPGM pgm=$MMPATH parms=$LOCALETRAD Wait=No Hide=No ELSE ENDIF #Multi MFILTER Where=UserFlag MFILTER Where=MACROFLAG Join=AND MFILTER Where=CACHETYPE='M' or CACHETYPE="B" Join=AND MFILTER Where=STATUS='A' Join=AND $LOCALEMULTI=$SAVETO+"6-Multi.gpx" IF $_FilterCount>0 MACROSET Dialog=GPX VarName=$GPX name=<macro> EXPORT Type=GPX Settings=<macro> File=$TEMPFILE $Round6 = GetFile($TEMPFILE) $Round6a = Replace("</wpt>",$swap6,$Round6) $Data = PutFile($LOCALEMULTI,$Round6a) RUNPGM pgm=$MMPATH parms=$LOCALEMULTI Wait=No Hide=No ELSE ENDIF # That's the end of the individual exports, so we're done here. Below is some housekeeping. # Clear the filter by finding all caches that aren't type "X", This is clunky, type "X" doesn't exist, therefore Reverse makes it find everying. MFILTER Where=MACROFLAG # Now we are in to all the pre-defined variables, that we bung at the end of the file. # Here are, maongst others, the Find-and-Replace strings that change the colours of the icons. <data> VarName=$swap1 <extensions> <fill xmlns="http://www.topografix.com/GPX/gpx_style/0/2"> <color>000000</color> </fill> </extensions> </wpt> <enddata> <data> VarName=$swap2 <extensions> <fill xmlns="http://www.topografix.com/GPX/gpx_style/0/2"> <color>00ff00</color> </fill> </extensions> </wpt> <enddata> <data> VarName=$swap3 <extensions> <fill xmlns="http://www.topografix.com/GPX/gpx_style/0/2"> <color>0000ff</color> </fill> </extensions> </wpt> <enddata> <data> VarName=$swap4 <extensions> <fill xmlns="http://www.topografix.com/GPX/gpx_style/0/2"> <color>0000ff</color> </fill> </extensions> </wpt> <enddata> <data> VarName=$swap5 <extensions> <fill xmlns="http://www.topografix.com/GPX/gpx_style/0/2"> <color>003300</color> </fill> </extensions> </wpt> <enddata> <data> VarName=$swap6 <extensions> <fill xmlns="http://www.topografix.com/GPX/gpx_style/0/2"> <color>cc9900</color> </fill> </extensions> </wpt> <enddata> <data> VarName=$GPX [TfmExportGpx] cbxLimit.Text=0 cbxUserNotes.Checked=False chkActual.Checked=False chkDefault.Checked=False chkExtra.Checked=False chkMyLogs.Checked=False chkSymbol.Checked=False edtFormat.Text=%code. %hint. By %By. (%Dif/%Ter) Last Logs:%last4 edtMax.Text= edtMaxGps.Text=60 edtWaypoint.Text=%name rbtGpx.Checked=True rbtLoc.Checked=False edtProblem.Text= edtExtra.Text= chkChild.Checked=False chkOnlyChild.Checked=False rbtAllChildren.Checked=True rbtOnlyFlagged.Checked=False rbtOnlyUnFlagged.Checked=False chkApplyName.Checked=False chkForce.Checked=True cbxVersion.Text=Ver 1.0 chkLogAlternate.Checked=False fnmTo.Text= chkCounts.Checked=False rbtGGZ.Checked=False [TfmExportGpx.cbxRecent.Items] <enddata>
Recent Comments