<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';}
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox where print preview displays the noscript content */
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

Also see [[AdvancedOptions]]
''Requires:'' r2049
''Usage:'' {{{--add-pois-to-areas}}}
''Description:'' Generate a single POI for each relevant polygon or multipolygon. The """POIs""" are created before the style rules are applied.  Each POI is given the same tags as those on the "parent" polygon or multipolygon as well as a mkgmap-specific tag ''mkgmap:area2poi=true'' which can be matched in a style rule if required.  The  """POIs""" are created at the following positions (first rule that applies):
** The first node tagged with building=entrance
** The centre point of the polygon
**The node with role=label
**The centre point of the biggest polygon

''Why might you use this?'': To ensure that a POI is created when otherwise only a polygon would be created.  For instance, you have an closed area in OSM that has the following tags:
The [[--add-pois-to-areas]] switch will create a POI in the centre of this area, which is then searchable via Mapsource or your GPS' search function

''Requires:'' r2066
''Usage:'' {{{--add-pois-to-lines}}}
''Description:'' Causes mkgmap to create POIs along lines.  If used, mkgmap will add certain mkgmap-specific tags to all such POIs, as follows:
* Each POI created will have mkgmap:line2poi=true set
* Each POI created will also have further tags specifying its position along the "parent" line:
** mkgmap:line2poitype=mid  ->In the middle of the line
** mkgmap:line2poitype=start ->At the start of the line (as defined by the line's direction)
** mkgmap:line2poitype=end ->At the end of the line (as defined by the line's direction)

I use this option to add POIs to tracks which show their smoothness, as follows:
mkgmap:line2poi=true & mkgmap:line2poitype=mid & smoothness=bad 		[0x7011 resolution 22 continue]
mkgmap:line2poi=true & mkgmap:line2poitype=mid & smoothness=very_bad	[0x7012 resolution 22 continue]
''Usage'': {{{--adjust-turn-headings=BITMASK}}}
Optional {{{BITMASK}}} (default value 3) allows you to specify which adjustments are to be made (where necessary):
1 = increase angle between side road and outgoing main road
2 = increase angle between side road and incoming main road
{{{BITMASK}}} means you add the values of the options together to get the result you want.  E.g. if you just want to increase angle between side road and incoming main road, use 2.  But if you want to both options, use 3.
''Description'': Wherever possible, ensures that turns off to side roads change heading sufficiently so that the GPS believes that a turn is required rather than a fork. This avoids spurious instructions to "keep right/left" when the road doesn't actually fork but actually requires a turn-off.
''Requires'': ?
''Usage:'' {{{--area-name=NAME}}}
Where {{{NAME}}} is the name you want to use
''Description:'' When a gmapsupp file is created, this option causes the specified area name to be used.  The area-name is used by the GPS unit.  It appears next to each map tile when you got to Map Setup
''Requires:'' ?
''Usage:'' {{{--bounds=directory|zipfile}}}
''Description:'' Works in two ways:
* If creating boundary file
**Specifies where boundary files should be stored if the {{{--createboundsfile}}} option is used.  
* If using boundary file as input to building a map
**Specifies where the boundary files to be used when generating a map are located.
The preprocessed boundaries are used to add special tags to all elements (points, lines and polygons) containing the elements location information. The style file can be used to assign the address tags mkgmap:country, mkgmap:region etc. using these values (see also [[--index]]).  The following special tags are created:          
* mkgmap:admin_level2: Name of the admin_level=2 boundary 
* mkgmap:admin_level3 : Name of the admin_level=3 boundary
* ...
* mkgmap:admin_level11
* mkgmap:postcode : the postal_code value

See also [[--createboundsfile]], [[--location-autofill]]
''Usage:'' {{{--cache CACHEFOLDER}}} where {{{CACHEFOLDER}}} is a folder that will (or already does) contain cache files
''Description:''  This parameter is optional and won't affect the outcome of the split, but it can reduce the time it takes for the split to complete. Setting this parameter will cause the splitter to generate several files in the specified directory during the first stage of the split. These files contain the same information as the source .osm file(s) do, but in an optimised format that allow subsequent passes over the data to happen much more quickly. The more passes that happen in the second stage of the split, the greater the speedup you will see.

Some benchmarks have shown the following speed improvements when running against uncompressed .osm files:
|# passes|speed increase|h
|1 pass|5%|
|2 passes|25%|
|3 passes|35%|
|4 passes|40%|
|5 passes|45%|

If you are using compressed .osm files (bz2 compression especially), the speed improvement should be greater still.

Note that these figures are very approximate; the actual performance will vary depending on your disk and CPU speed, the particular map being processed, and what other disk and CPU activity is taking place on your PC at the same time. In some cases you might find that splits that only require a single pass will run faster without the disk cache enabled.

The disk cache can be used across multiple runs of the splitter, as long as you are splitting the same .osm file(s) each time. For example suppose you ran a splitter with """--cache"""=. """--max-nodes="""1500000, but found that max-nodes value was too high when running mkgmap. You can run the splitter again, this time with """--cache=""". """--max-nodes=1200000""", and the existing cache files will be used to perform the split. This will be much faster than reprocessing the .osm file. When you reuse a cache like this, there is no need to specify the .osm file on the command line as all the required data will be read in from the cache directly. Remember to delete the cache files if you want to rerun the splitter with a different osm file.

Note that the disk cache can require a lot of disk space, typically about 20-25% of the space the uncompressed .osm file takes up. For example the 27GB europe.osm file generates a cache of just over 5GB.
''//Note that this option is deprecated - please use [[--code-page]] instead//''

''Requires:'' r1442?
''Usage:'' {{{--charset=foo}}}
Allows the use of non ASCII characters in street names.  Note that many GPS devices cannot handle non-ASCII characters and instead will display a ?.  When this option is ''not'' used, mkgmap will transliterate non-ASCII characters to the nearest ASCII character
Checks that roundabout flare roads are sane (oneway, point in the right direction and don't extend further than they need to).  See also [[--max-flare-length-ratio]]
When used in combination with the java option -Dlog.config=logging.properties, issues warnings about roundabouts that have the wrong direction.  By default, mkgmap will use the first roundabout it comes across to define what the "right" direction is, unless you use invoke mkgmap with [[--drive-on-left]] or [[--drive-on-right]].
''Requires:'' r1752
''Usage:'' {{{--coastline=foo,bar,foobar}}}
''Description:'' Use the {{{--coastline}}} switch to define a comma-separated list of files that contain coastline data.  If you use this switch, any coastline information in other input files (e.g. OSM data) will be ignored.  {{{foo, bar}}} and {{{foobar}}} must be in either OSM or PBF format.  This option is useful if you find that the coastline in your area is continually getting broken by OSM edits.  Instead, you can choose to create a separate coastline file (e.g. by downloading just coastline data using XAPI), fixing any errors then "freezing" it and using this in future, rather than any coastline data in up-to-date OSM files that you download from OSM.org or Geofabrik etc.

Note that this option has been superceded by [[--precomp-sea]] which goes one step further and actually specifies the sea areas entirely, so you no longer need to worry about whether the coastline is intact.

''Usage:'' {{{--code-page=number}}}
''Description:'' Sets the code page for the map compilation.  e.g. {{{--code-page-=1252}}}.  The code page controls the character set that is used in all text on the map.
''Requires:'' r2126
''Usage:'' {{{--copyright-message=foo}}}
''Description:'' Specifies the copyright message (in //foo//) to be used in the generated map.

See also [[--license-file]].
Sets the map's abbreviated country name. The default is "ABC".  This also appears in POIs where the country name is not set, according to whatever is stipulated in [[--location-autofill]]
Sets the map's country name. The default is "COUNTRY".  You can set this per-tile using template.args
''Requires:'' ?
''Usage:'' {{{--createboundsfile=file}}}
''Description:'' Reads the boundary information contained in {{{file}}} and creates a pre-processed set of bounds files, by default in a directory called ''bounds'' unless the [[--bounds]] option is also set.  You would use this if you want to use boundary information to populate addresses in your map.  The boundary information in {{{file}}} can be in OSM or PBF format.  You could either use a regular OSM extract, or preferentially extract just the boundary information from an OSM extract using osmosis.  The latter uses a lot less memory.  See http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2011q2/011199.html for more details.

See also [[--bounds]], [[--location-autofill]]
''Usage:'' {{{--delete-tags-file=FILENAME}}}
''Description:'' {{{FILENAME}}} should contain one or more lines of the form:
If this switch is used, when processing OSM data mkgmap will delete any tag/value pairs that match those listed in {{{FILENAME}}}.   
Detail map name displayed (followed by map number in brackets) in User Data Tabs in MapSource when a map is selected for upload. Stored in the 
detailed map.  When uploaded to GPSr will be displayed in the GPSr Map Setup menu.  Needs to be set for each tile individually, using the template.args file.

The {{{--description=XXX}}} is displayed in mapsource in the user data tab when you select a map for upload, and forms the first part of the map name in the GPSr. If you are not using mapsource to upload maps then this could very well be different.

''Requires:'' ?
''Usage:'' {{{--draw-priority=NUM}}} where {{{NUM}}} is a number between 0 and 31
''Description:'' When two maps in a gmapsupp.img cover the same area, this option controls what order they are drawn in by your GPS and therefore which map is on top of which.  Higher priority maps (i.e. where the number is bigger) are drawn ''on top'' of lower priorities. 

25 is the default draw priority (check - not verified).

If you're using {{{--draw-priority}}} you should probably also be using [[--transparent]]
Tells mkgmap that the map is for a country where we drive on the left, so all roundabouts should be clockwise.
Tells mkgmap that the map is for a country where we drive on the right, so all roundabouts should be anti-clockwise.
Sets the family ID of the map.  Must be between 2 and 9999 (though some maps appears to have higher values - see list below).
*The family ID is only stored in the TDB file (see [[--tdbfile]]).  It is not stored in individual tiles and so is not used unless you are installing the maps in Mapsource.
*If you use a TYPfile, the family ID of the map must match that of the TYPfile otherwise you will get display problems.
*When creating map-sets with multiple layers, the family-id needs to be different for each layer, otherwise transparency (on the GPS unit) will not work. ''However'', if you want to import a map-set that has multiple layers into MapSource, the family-ids for each layer //must be the same//.  Thus you can't just compile a multi-layer map for your GPS and also import it into MapSource: you have to do things differently.
*Each mapset loaded into MapSource must have a different family-id, otherwise it will complain when it starts and refuse to continue.

! List of """family-IDs"""

2 North America City Navigator V4.00 
5 Europe City Navigator v4.0
5 World Map 
6 North America City Select v4.0
6 Topo USA, Ost 
7 Topo USA, West 
8 Topo USA, Hawaii 
9 Topo USA, Alaska
10 Fishing Hot Spot v4.00
11 Americas BlueChart v4.00 
12 Europe City Select v4.00 
13 Atlantic BlueChart v4.00
13 LenOblast 2006 Address SPB 
14 Europe MetroGuide V4.00
14 LenOblast 2006 with Routing
15 Guangdong V1.5 
17 Australian City Navigator V4.00
18 US Recrational Lakes v4.00
19 Topo Pirineos 1.0
20: Japan Road Navi 25000 v2
20 MascowRuss Test
20 Topo Catalunya V3
21 North America City Navigator V4.01 
22 MetroGuide Austria
23 South Africa City Select V4.00 
25 Topo Pirineos v2.7
26 Australian Metroguide V4.00 
27 Americas BlueChart v4.01 
28 Atlantic BlueChart v4.01 
29 Pacific BlueChart v4.01+
30 US Topo 24K National Parks, West v2
31 US Waterways & Lights - Continental US
32 US Waterways & Lights - Alaska
32 Taiwan Topo V5.00
33 US Waterways & Lights - Hawaii 
35 Europe City Navigator v5.00 
36 MetroGuide & Roads and Recreation Canada
37 MetroGuide European
38 Americas BlueChart v5 
39 Topo Thailand
41 Atlantic BlueChart v5 
42 Pacific BlueChart v5
43 US Topo 24K National Parks, East v2
44 US Topo 24K National Parks, Central v3 
45 European City Select V5.00 
46 MetroGuide USA v5
48 North American City Navigator v5
50 Atlantic Recreational Basemap
51 MetroGuide Canada v4
52 Topo Canada v2 
54 ConSur GPS.COM.AR v10.1
55 ConoSur GPS.COM.AR v6.30 
57 Thailand Map v6.6
57 City Navigator Thailand v7
57 Thailand Street Map v10.0 
58 Americas BlueChart v5.5+
58 Venezuela 1.4 
59 Atlantic BlueChart v5.5 
60 Pacific BlueChart v5.5+
60 MalSing v2.24 
61 North America City Select V5.00 
62 European City Select V6.00
62 Latvia 
63 European City Navigator Version 6 
66 Europe 20m Contour lines
67 South America 20m Contour line v2.0 
67 Taiwan City Navigator v7.01 
68 Americas BlueChart v6 
69 Atlantic BlueChart v6 
70 Pacific BlueChart v6+ 
71 South Africa City Select v5 
72 City Navigator Australia v5
77 Karten der Alpen (Contour Lines)
78 US Recreational Lakes with Fishing Hot Spots, West, v5
79 Netherlands Bicycle map - Onroute Fietskaart NLv1.62
79 US Recreational Lakes with Fishing Hot Spots, East, v5
80 US Recreational Lakes with Fishing Hot Spots, Central, v5
81 Japan Other
83 City Navigator North America v6
84 Topo Austria 
85 North American City Select V6 
87 City Navigator Middle East v2
91 US Topo 24K National Parks, East v3 
92 BlueChart Americas v6.5 
93 BlueChart Atlantic v6.5 
94 BlueChart Pacific v6.5
94 Sr_Lanka_Routable 
98 City Navigator Europe v7 
99 City Select Europe v7
100 Israel routable v1.31
100 Metro Guide Europa v7.0
100 TE - Tracksource Brasil Estadual v3.13
101 By_translit
101 Nepal Lukla to Everest
101 TM - Tracksource Brasil Municipal v3.13
102 Tracksource Brasil Aeronáutico v 1.5
104 Tracksource Brasil Nautico v12
105 Tracksource Brasil Topo v13
109 Tunisia v9
111 PC Basemap 
114 BlueChart Americas v7.0 
115 BlueChart Atlantic v7.0 
116 BlueChart Pacific v7.0
117 Euro Greece v6.09 
121 City Select Europe v7 c320
121 Greece Anavasi 
123 City Navigator North America v7 
124 City Navigator North America NT v7 
125 City Select North America v7
126 UMP-pcPL (Poland)
127 Ibycus Topo 1.22 
129 City Navigator Australia v6 
131 BlueChart Americas v7.5 
132 BlueChart Atlantic v7.5 
133 BlueChart Pacific v7.5+
134 WorldMap v4
140 Metroguide Australia v6 
141 Topo Great Britain v2 
142 City Navigator Middle East v3 
143 City Navigator Europe v8 
144 City Navigator Europe NT+ v8
145 MetroGuide Europe v8 
147 City Select Mexico NT V2.0 
148 BlueChart Americas v8.0 
149 BlueChart Atlantic v8.0 
150 BlueChart Pacific v8.0 
155 China City Navigator ENG OF v5.0
157 City Celect Brazil NT v2 
170 City Navigator North America v8 
171 City Navigator North America NT v8 
173 BlueChart Americas v8.5 
174 BlueChart Atlantic v8.5 
175 BlueChart Pacific v8.5 
177 City Navigator Australia v7 
178 City Navigator New Zealand v3
180 MetroGuide North America v8
190 Canarias 
197 City Navigator Europe NT v9 
198 City Navigator Europe v9
199 US Inland Lakes v3
200 TOPO U.S. 2008
202 Südtirol 2.1 (Italy) 
204 BlueChart Americas v9.0 
208 BlueChart Atlantic v9.0
209 TM 5.14 
210 BlueChart Pacific v9.0 
214 Taiwan City Navigator v8.01
217 MetroGuide Europe v9 
218 Venezuela Ruteable 5.8 
219 City Navigator South Africa v6 
220 City Navigator Brazil NT v3 ALL
223 Tunisia v11
224 Japan Street Map v8.00
230 City Navigator Singapore/Malaysia NT v2.72
232 BlueChart G2 VUS006R - Chesapeake v9.00
232 BlueChart G2 VUS017R - Lake Huron-Lake St. Clair v9.0
232 BlueChart G2 VUS021R - California - Mexico v9.00
234 BlueChart G2 VEU453S - Adriatic Sea - South Coast
234 BlueChart G2 VEU503S - Lake Ladoga and Onega
234 BlueChart G2 VEU504S - Black and Caspian Sea 
235 BlueChart G2 VEU014R - Italy, Adriatic Sea
235 BlueChart G2 VEU021R - Denmark East and Sweden Southeast
235 BlueChart G2 VEU042R - Oslo to Trelleborg
235 BlueChart G2 VEU049R - Stockholm to Aland and Turku
235 BlueChart G2 VEU050R - Aland to Vyborg
236 BlueChart G2 VEU711L - Sweden South 9.00
240 MetroGuide Canada v5
241 City Navigator Middle East v4
242 City Navigator Middle East NT v4 
243 City Navigator North America 2008 
244 City Navigator North America NT 2008
248 City Navigator Thailand v8 
250 BlueChart Americas v9.5
250 LaHispaniolaV250 
254 BlueChart Atlantic v9.5 
256 BlueChart Pacific v9.5
260 BlueChart G2 VEU505S-Baltic Sea, East Coast
264 BlueChart G2 VAE001R - Japan
264 BlueChart G2 VAE002R - Yellow Sea
267 City Navigator Indonesia NT v2.1 
271 City Navigator Australia 2008 
272 City Navigator Australia NT 2008
273 City Navigator New Zealand 2008 
278 City Navigator Mexico NT 2008
279 City Navigator China CHS OF v6
280 China v6.0 NT English
281 City Navigator India 2010.20
283 City Navigator Europe 2008 
284 City Navigator Europe NT 2008
287 City Navigator Taiwan v8.51 
291 BlueChart Americas v2008
295 BlueChart Atlantic V2008
297 BlueChart Pacific v2008
299 BlueChart G2 VCA001R - Canada for Inside Passage
299 BlueChart G2 VSA004R - Natal to Buenos Aires
300 Tracksource Roteavle Rodoviario 6.05
309 TRC-Brasil 5.13
312 BlueChart G2 VEU452S - Adriatic Sea - North Coast
312 BlueChart G2 VEU454S - Barcelona and Valencia
312 BlueChart G2 VEU470S - Stromstad to Halmstad 
312 BlueChart G2 VEU478S - Iceland East 
313 BlueChart G2 DAW005R - The Gulf and Red Sea 
313 BlueChart G2 VEU015R - Aegean Sea and Sea of Marmara 
313 BlueChart G2 VEU041R - Oslo - Skagerrak - Haugesund
314 BlueChart G2 VEU704L - France v10.00
314 BlueChart G2 VEU708L - North Norway
314 BlueChart G2 VEU710L - Denmark, Skagerrak & Kattegat
314 BlueChart G2 VEU712L - Sweden East
315 BlueChart G2 VPC414S - Mackay to Twofold Bay v10.00
323 City Navigator Russia NT 2008
324 City Navigator North America 2009
325 City Navigator North America NT 2009
328 City Navigator Middle East 2008
330 Topo us 24K west
334 City Navigator Brazil NT v4
335 City Navigator Southeastern Asia v2.0 NT
339 TRC-Brasil v10.06
347 City Navigator Korea v7 KOR
348 Japan Topo 10M v8.02
350 China City Navigator NT v6.6
351 China City Navigator Eng NT v6.5S NT
354 BlueChart Americas 2008.5
355 BlueChart Atlantic v2008.5
357 BlueChart Pacific v2008.5
358 City Navigator Australia NT 2009
359 City Navigator Australia OF 2009
360 Taiwan City Navigator v8.63B NT Chinese
361 City Navigator Singapore/Malaysia NT v3.01
363 City Navigator Southeastern Asia v3 NT 
365 Good Pub Guide 2008 UK
364 City Navigator Indonesia NT v3.02
366 Korea Topo v7 KOR 
369 City Navigator Japan 9.00
370 Hongkong City Navigator NT 2008
374 Japan Street Map NT v9.03
376 Recreational Map of Europe v2.00 
378 City Navigator Europe NT 2009
379 City Navigator Europe 2009
381 BlueChart Germany Binnengewaesser North-East
382 Topo Australia v2
384 City Navigator Europe NT 2009 3D
389 Topo Canada v4
390 Topo France v2
392 Topo France North-East v2
395 Topo France Sud Ouest v2
396 City Navigator North America NT 2009.1 
397 City Navigator Europe NT 2009.11
397 CN Europe NT 2009.11 3D
400 TGBD035 - The Thames Path v2.0 {400
403 CN Mexico NT 2010.10
404 City Navigator NT Brazil 2010.10
405 City Navigator Russia NT 2010.10
411 BlueChart G2 - HXUS039R-US v11.00
414 BlueChart G2Vision France VEU705L 
420 BlueChart G2 - VEU709L-South Norway v11.00
421 Ðåãèîíû Ðîññèè - Çàïàäíàÿ ÷àñòü (Russia west)
430 City Navigator Indonesia NT v4
431 China City Navigator v7.01 NT CH
432 China City Navigator v7.50 NT ENG
433 City Navigator HongKongMacau NT v7.0 ENG NAVINFO
434 City Navigator Singapore/Malaysia NT v4.02 with JVC 
445 City Navigator Middle East NT 2010.1
446 Topo Deutschland v3
448 TOPO Deutschland South v3
449 City Navigator Europe NT 2010.1
450 City Navigator North America NT 2010.1
451 Malsingmaps MalaysiaSingaporeBrunei NT 2010.20
452 Topo Marocco v2
453 Japan Street Map NT v10
460 City Navigator Korea v7 ENG
462 One India - Satguide 
467 Topo Austria v2
469 Recreational Map of Europe v3.00
487 BlueChart G2 VCA012R - Lake of the Woods, Rainy Lake
487 BlueChart G2 VSA008R - Central America West
487 BlueChart G2 VUS010R - Southeast Florida v10.50 
487 BlueChart G2 VUS007R - Norfolk - Charleston v10.50
487 BlueChart G2 VUS011R - Southwest Florida v10.50
487 BlueChart G2 VUS027R - Hawaiian Is. - Mariana Is. v10.50
488 BlueChart G2 VUS512L - Mid-Atlantic
488 BlueChart G2 VUS515L - Brownsville - Key Largo
489 BlueChart G2 VAW450S - The Gulf
489 BlueChart G2 VEU477S - Iceland West
490 BlueChart G2 VEU014R - Italy, Adriatic Sea
490 Bleuchart G2 VEU047R - Gulf of Bothnia - Kalix to Grisslehamn v10.50
491 BlueChart G2 VEU706L - UK & Ireland v10.50
491 BlueChart G2 VPC410S - Esperance to Exmouth Bay v10.50
493 BlueChart G2 - VAE004R - Hong Kong-South China Sea v10.00
493 BlueChart G2 VPC020R - Brisbane SW to Geraldton v10.50
499 City Navigator New Zealand NT 2009
500 CentroAmerica Norte
500 Topo Norwegen, N50 CD01 Stavanger 
501 Topo Norwegen, N50 CD02 Kristiansand 
501 Madeira 
502 Guatemala+Belice Salrut beta
502 Topo Norwegen, N50 CD03 Oslo
503 El Salvador Salrut v1.8
503 Topo Norwegen, N50 CD04 Bergen
504 Honduras Salrut beta
504 Topo Norwegen, N50 CD05 Hardangervidda
505 Topo Norwegen, N50 CD06 Hamar
506 Topo Norwegen, N50 CD07 Jotunheimen 
507 Topo Norwegen, N50 CD08 Østerdalen 
508 Topo Norwegen, N50 CD09 Ålesund
509 Topo Norwegen, N50 CD10 Trondheim
510 Topo Norwegen, N50 CD11 Steinkjer
511 Topo Norwegen, N50 CD12 Brønnøysund
512 Topo Norwegen, N50 CD13 Mo i Rana
513 Topo Norwegen, N50 CD14 Bodø
514 Topo Norwegen, N50 CD15 Harstad
515 Topo Norwegen, N50 CD16 Tromsø
516 Topo Norwegen, N50 CD17 Kautokaino
517 Topo Norwegen, N50 CD18 Alta
518 Topo Norwegen, N50 CD19 Nordkapp
519 Topo Norwegen, N50 CD20 Kirkenes
521 Africa Road Atlas
522 GPSTravelMaps Kilimanjaro Routable v1.8
528 Äîðîãè Ðîññèè Russian Navicom
529 SiCG Road 
533 Guatemala GPSTravelMaps v1.8
534 Dominican Republic & Haiti GPSTravelMaps v1.5
534 Topo Deutschland South 
535 Costa Rica GPSTravelMaps v2.3
535 Topo Deutschland Nord
536 Topo Deutschland
539 Barbados 1.1 GPSTravelMaps
540 Nicaragua GPSTravelMaps v1.6
541 Rotweiler Pakistan 1.20
542 Mapa Chile 
543 GPSTravelMaps Egypt Routable v1.0
543 Topo Schweden, 01 
544 GPMapa v2.0 Polen 
547 Honduras GPSTravelMaps Routable v1.1 {547}(05.10)[o].rar
549 Topo Norwegen, N250 Overview
561 Chile Topografico 
562 Slovakia Roads v4
562 Topo Sweden, 01 
563 Topo Sweden, 02 
564 Topo Sweden, 03 
565 Topo Sweden, 04 
566 Topo Sweden, 05 
567 Topo Sweden, 06 
568 Topo Sweden, 07 
569 Topo Sweden, 08 
570 Topo Sweden, 09 
571 Topo Sweden, 10
572 Colombia Ruteable Colrut v4.82
573 Slovakia Topo 
575 CarteBlanche Ukraine v3.60 
578 Czech Republic Topo 
579 Atlas CR10R v6
580 Adresy CR v1
593 Venezuela Topografico V3
595 VenTopo 4.1 Venezuela Topográfico 4.1 (10m) 
597 Suriname Routable v1.1 
609 South African Street Maps 
614 CG v32 (CroGuide) 
625 Topo Finnland Vapaa-ajan kartta, Alue 1
626 Topo Finnland Vapaa-ajan kartta, Alue 2
627 Topo Finnland Vapaa-ajan kartta, Alue 3
628 Topo Finnland Vapaa-ajan kartta, Alue 4
629 Topo Finnland Vapaa-ajan kartta, Alue 5
630 Topo Finnland Vapaa-ajan kartta, Alue 6
632 Philippines routable 5.17
654 Mocambique
666 Rotweiler Myanmar v0.80
700 Topo Deutschland v2
701 Topo Deutschland v2 Nord
702 Topo Deutschland v2 South
703 Topo Schweiz 1.1 
704 Topo Schweiz Ost
705 Topo Schweiz West
706 Topo Oesterreich 
708 AdriaROUTE 3.00 
709 NaviGuide Hungary 5.4 NT 
715 Slovakia Roads v5 
716 Slovakia TOPO v2 
718 Topo France GPS Topo 1 Alpes 
719 Topo France GPS Topo 2 Pyrénées - Sud Ouest 
720 Topo France GPS Topo 3 Provence Côte d'Azur Méditerranée 
721 Topo France GPS Topo 4 Bretagne - Normandie 
722 Topo France GPS Topo 5 Ile de France 
723 GPS Kort Island V2 Small 
724 Chile Road & Topo
725 Chile Roads & Topo v1 
730 Mediterranean Sea V 3.0
732 Japan Routable 2.0 
734 GPS Kort Island V2 Medium 
735 GPS Kort Island V2 Large 
744 Rotweiler Thailand & IndoChina Combined Routable 1.01
744 Thailand (use ID 5065 and PID:0) 
746 RO.A.D. 2005
747 Bangkok Thailand 3.0 
747 RO.A.D.2005 DELUXE
748 ChiangMai Thailand 3.5
749 Rotweiler Bali Routable 3.5
750 Roads of Russia with Routing
759 IndoChina Routable 2.65
760 South Thailand Tourist Edition 4.20
762 Hong Kong Routable 4.5
763 IndonesiaCentral 2.1
764 Cambodia Routable 5.2
765 Guam 1.01 
772 Topo France GPS Topo 6 Alsace Lorraine - Vosges Jura 
773 Topo France GPS Topo 8 Bourgogne - Centre 
774 Topo France GPS Topo 9 Pays de Loire - Poitou Charentes 
775 Topo France GPS Topo 10 Nord Picardie - Champagne Ardennes 
776 Topo France GPS Topo 11 Outre - Mers 
779 Friluftskartan Pro - Norra Norrland
791 TOPO50 v3.1
792 TOPO 50 v4 
795 TOPO Czech v 1.20 
796 Topo Sweeden Friluftskartan Pro - Mellersta och Södra Norrland 
797 Topo Sweeden Friluftskartan Pro - Svealand 
798 Topo Sweeden Friluftskartan Pro - Götaland 
800 Bodensee Navigationskarte
800 Colombia
800 Emerakd Island TOP
800 GPMapa 4.0 Polska
800 Greece Anavasi 4.34
800 Iran Routable Map v2.3.1
800 Sao Tome Islands
800 Shonkey Full Topo
801 Emerakd Island DEM 
801 GPMapa 2007.1
801 Kazakhstan
801 Shonkey Topo Without Contours 
802 MapSource Topo Nederland 
803 Emerakd Island OSM 
803 Thailand 803
804 Emerakd Island MGL
805 Emerakd Island BGS
805 Oslomarka
806 Emerakd Island PIL
807 Nigeria Streetmaps, Topo & Rec Version 2 
810 Shonkey Large Scale 
820 Japan RoadNavi 25000 and Topo v2
821 Auto drive Hellas v1.95 Latin 
822 Auto drive Hellas v1.85 Greek 
824 Topo France GPS Topo 7 Massif Central 
830 Iceland GPS Kort 3.5 
831 Iceland GPS kort DEM 
836 GPMapa 5.0
838 Uruguay IX v9.02
842 Garda Lessina 20 
844 AdriaTOPO 2.20 
846 Estonia
848 NacCity 2010.01 TKLTLA
852 Swiss Lakes (Schweizer Seen)
856 Laos_Vietnam 2008_R2
857 Laos_Vietnam_Topo 2008_R2 
857 Lietuva TOPO V1.083 NT
865 Cuba
865 Topo&Roads Caribbean v1.30 
866 TopoGuide Hungary V2.12
866 Bermuda
880 Malta-Gozo v2.5b
881 Vietnam 2.6
884 Ukraine_Rel V3.03
887 MFM-SRTM Topo Map v1.01
887 Topo Pro CD1 Stavanger 
888 Malaysia Free Maps v1.34
888 OSM Egypt
888 Topo Pro CD2 Kristiansand 
889 Topo Pro CD3 Oslo
890 Mapear eXtremo Cordoba V1.00
890 Topo Pro CD4 Bergen
891 Topo Pro CD5 Hardangervidda
891 Antartica 
892 Topo Pro CD6 Hamar
893 Topo Pro CD7 Jotunheimen 
894 Topo Pro CD8 Østerdalen 
895 Topo Pro CD9 Ålesund
896 Topo Pro CD10 Trondheim
897 Topo Pro CD11 Steinkjer
898 Topo Pro CD12 Brønnøysund
899 Topo Pro CD13 Mo i Rana
900 Mapear V6.00-Mapas Electronicos Argentinos
900 Topo Pro CD14 Bodø
900 Shonky Tranparent Contours
900 Language Guide = {900, 2, 0, 0}
900 Travel Guide, Europe 2005 = {900, 1, 1, 1}
900 Travel Guide, Europe 2006 = {900, 1, 1, 5}
900 Travel Guide, Fodor's North America = {900, 5, 1, 0}
901 Topo Pro CD15 Harstad
902 Topo Pro CD16 Tromsø
903 Topo Pro CD17 Kautokaino
903 Mapear V7.00-Mapas Electronicos Argentinos
904 Argentina Clarin Mapas V2.0 Argentina 
904 Topo Pro CD18 Alta
905 Topo Pro CD19 Nordkapp
906 Topo Pro CD20 Kirkenes
908 Argentina-Chile mapear V9.1
920 Japan Topo 20m v2
928 AdriaTOPO 2.10 HR
929 SCG Route 2.10 NT 
931 RO.A.D.2006
933 Aeroscan_Roads
933 Ukraine v.4.13uL 
934 Ukraine v.4.03eL 
957 Nepal Annapurna-Region
960 Topo Italy 50
961 Topo Italy 100
962 Italy Topo20 v1.0
963 Egypt OSM {963}(08.09)[mo].zip
963 Free Open GPS NZ Autorouting
967 Peru Ruteable 0.60
987 CaboVerde
987 Cymps_v8
987 Peru Topografico V1 
988 Dominican Republic and Haiti - LaHispaniolaV300
990 NaviGuide Hungary 
991 TopoGuide Hungary
992 La Hispaniola
999 Peru Ruteable 2.20
1011 Cyprus Cymps.Com v11
1024 Bulgaria OFRM Geotrade v4.70 
1040 RWSMaps Caribbean v2.4
1041 RWSMaps Bermuda v1.3 
1086 TrekMap v2 
1088 Land Navigator Italia 1
1094 Georgia GeoLand 
1102 Topo Spain v3.0 
1102 Spain TOPO_Península Norte 
1103 Spain TOPO_Península Sur 
1104 Spain TOPO_Islas 
1105 Spain TOPO Hispania
1114 Dnepr_Dunaj_River v.2_00uL
1115 Dnepr River v.1.41eL
1119 India NT
1120 Roads of Russia with Routing (Federal regions) 4.04
1121 Roads of Russia v5.0
1142 AERO CZ_SK_H v6.5
1143 AERO TOPO CZ/SK/H v6.5
1144 SPEC TOPO CZ v6.5 
1149 BG Route (Bulgaria)
1151 Routeplanner Belux Fiets/Wandelaar
1158 Baltic States Roads v1 
1164 GPMapa 2007.3 oem
1167 Topo Finland Pro
1171 Chile Streets 2008 NavChile -img 
1174 Ukraine - Luxena 
1184 GPMapa 2007.2 
1187 GPMapa 2007.3 subskrypcja
1189 RO.A.D 2009.10 v3.02
1204 Bulgaria OFRM Geotrade TOPO 5.11 LAT
1204 Bulgaria OFRM Geotrade V5.20
1214 Garmap Africa Series 2008 Southern Africa Streetmaps, March Edition
1215 Garmap Africa Series 2008 Southern Africa Topo & Rec, March Edition
1215 Garmap Africa Series 2009, Southern Africa Streetmaps
1217 Cyprus3D_Q6.1
1218 Southern Africa Streetmaps 2009, DEM
1218 West Africa Streetmaps V1.1
1219 Garmap Africa Series 2008 South Africa Waterways, March Edition
1222 Recreation Map Europe - Shqipδrisδ
1223 Recreation Map Europe - Andorra
1224 Recreation Map Europe - Belgie
1225 Recreation Map Europe - Bosna i Hercegovina
1226 Recreation Map Europe - Balgarija
1227 Recreation Map Europe - Danmark
1228 Recreation Map Europe - Deutschland
1229 Recreation Map Europe - Eesti
1230 Recreation Map Europe - Suomi
1231 Recreation Map Europe - France
1233 Recreation Map Europe - Ireland
1235 Recreation Map Europe - Italia
1236 Recreation Map Europe - Hrvatska
1237 Recreation Map Europe - Latvija
1238 Recreation Map Europe - Lichtenstein
1239 Recreation Map Europe - Lietuva
1240 Recreation Map Europe - Luxembourg
1241 Recreation Map Europe - Malta
1242 Recreation Map Europe - Makedonija
1246 Recreation Map Europe - Nederland
1248 Recreation Map Europe - ╓sterreich
1249 Recreation Map Europe - Polska
1250 Recreation Map Europe - Portuguesa
1251 Recreation Map Europe - RomΓnia
1252 City Navigator Singapore/Malaysia NT v4.01
1253 Recreation Map Europe - San Marino
1254 Recreation Map Europe - Sverige
1257 Recreation Map Europe - Slovensko
1258 Recreation Map Europe - Slovenija
1259 Recreation Map Europe - Espa±a
1260 Recreation Map Europe - Ceskß Republika
1262 Recreation Map Europe - Ellinikφ
1263 Recreation Map Europe - Magyarorszßg
1265 Recreation Map Europe - United Kingdom
1267 Recreation Map Europe - Kypriaki
1280 Navicom Roads of Russia with Routing (Federal regions) Navicom v5.18 Cryllic
1281 Roads of Russia 6.05 Topo Cryllic 
1303 GPMapa 2007.4 box
1307 Kazakhstan Guidejet®Maps NT 
1309 Baltic v1.5
1310 REGIO Eesti topo v1.0
1312 Kazakhstan
1315 Slovakia Roads v6 NT
1317 Slovakia Fish
1318 Slovakia Adresy v1.1
1320 GPMAPA 2008.1
1324 GPMAPA 2008.2 box
1326 GPMapa NT 2008.3 oem
1331 Ethiopia OSM {1331}(02.09)[io].rar
1354 Czech-Slovakia-Hungary Aero CZ SK H v7.1 
1355 Czech-Slovakia-Hungary Aero Topo CZ SK H v7.1
1356 Czech-Slovakia-Hungary Aero Spec Topo CZ SK H v7.1
1360 SiteFinder GPS - OilTrax NT {1360}(11.08)[io].rar
1361 Italy Trekmap Emilia Romagna
1362 Trekmap Lombardia 
1363 Italy Trekmap Toscana
1367 Topo Adventure 01 Stavanger
1368 Topo Adventure 02 Kristiansand
1369 Topo Adventure 03 Oslo
1370 Topo Adventure 04 Bergen
1371 Topo Adventure 05 Hardangervidda
1372 Topo Adventure 06 Hamar
1373 Topo Adventure 07 Jotunheimen
1374 Topo Adventure 08 Østerdalen
1375 Topo Adventure 09 Ålesund
1376 Topo Adventure 10 Trondheim
1377 Topo Adventure 11 Steinkjær
1378 Topo Adventure 12 Brønnøysund
1379 Topo Adventure 13 Mo i Rana
1380 Topo Adventure 14 Bodø
1381 Topo Adventure 15 Harstad
1382 Topo Adventure 16 Bodø
1383 Topo Adventure 17 Kautokeino
1384 Topo Adventure 18 Alta
1385 Topo Adventure 19 Nordkapp
1386 Topo Adventure 20 Kirkenes
1387 GPMapa TOPO 2008 2.05
1388 GPMapa TOPO 2008
1390 TOPO Czech 2
1391 TOPO Czech 2 PRO
1392 Roads of Latvia v1.06
1393 TOPO Latvia v1.06
1394 Nederland Binnenwateren
1395 Topo Schweiz v2
1408 Pakistan Navigator NT v1.05a
1436 JamNav 1.11.0
1437 Myanmap major streetMap 3
1445 India v4.01 NT 
1453 Colombia by Pamacol 9.2
1471 GPS Kort Iceland 2009 NT
1493 Costa Rica 1.1
1493 El Salvador v2
1493 Guatemala
1493 Mapa Honduras v1
1493 Nicaragua v1
1493 Panama v1
1584 NepalTOPO NPL Routable 2010.1
1634 GPMapa NT 2008.4 oem
1641 Autoguiagps NT V2.24
1645 Autoatlas v8.1 NT
1646 Czech Atlas 2010NT{1646
1676 Roads of Latvia ZL Pro v.1.0.2 NT 
1677 Chile NAVChile 3.35
1677 Latvia Roads v1.1.2 NT
1681 Latvia Topo v1.2 NT
1692 Garmap SAS 2009 TMC 2nd Edition
1694 SA Streetmapd DEM TMC 
1698 MapSource Iraq v5
1699 Mapsource Afghanistan Globalmap v5.0
1704 Topo Czech 3 20m
1705 Topo Czech 3.1 PRO 10m
1708 Slovakia Topo v3 beta2
1710 GPMapa 2009.1
1722 CarteBlanche Ukraine NT 2010.03 uL
1725 Topomap Benelux
1730 GPMapa TOPO 2009 3.03
1737 South Africa Waterways 2009
1749 Friluftskartan Prime 30N {1749,1,2,13}
1749 One India - India Street Map - Satguide
1756 Friluftskartan Prime
1764 GPMapa NT 2009.2 oem
1787 Poland GPMapa NT 2009.3
1812 LatinoAmerica GPSAtlas 2010V1.1ES
1815 Garmap SAS Streetmaps TMC 2010.1
1816 South Africa Topo & Rec 2010.1 NT - (TMC) / Non-NT
1817 South Africa DEM 2010.1 (TMC)
1818 West Africa Streetmaps v1
1822 Vietnam WildGoose RoadMap & Topo v1.05
1886 Poland GPMapa 2009.4 
1887 Poland GPMapa 2010.1 
1905 UEA-OMAN-QUATAR Road Map with Topography
1957 Panama Street Map v3.3.2
1964 Moldova
1976 Pirineos Catalunya por dasorsan
1978 Topo MONTSENY
1980 Topo Andorra por dasorsan 
2000 OSM Cuba Haiti DomRep Jamaica
2002 Ecuador OSM
2002 Baghdad Streets v1
2002 Iraq v2.01
2004 Afghanistan TECv2.0
2004 City Navigator Europe NT 2010.2
2005 City Navigator North America NT 2010.20
2005 Kabul City Map TECv2.0
2006 City Navigator Australia And New Zealand NT 2010.10
2006 Iraq TECv2.20
2007 City Navigator NT Brazil 2010.20
2008 Israel routable v1.18
2009 City Navigator Middle East NT 2010.10 
2009 Israel routable NT v1.64
2012 BlueChart G2 - HSA003R - Trinidad to Rio de Janeiro v11.50
2012 BlueChart G2 - HSA004R - Natal to Buenos Aires v11.50 
2012 BlueChart G2 - HSA005R - Florianopolis to Falkland Island v11.50
2020 CNEU 2010.30 
2024 BlueChart G2 - VUS511L - Boston - Norfolk v11.50
2026 BlueChart G2 - VEU015R - Aegean Sea and Sea of Marmara v11.50
2027 BlueChart G2 - VEU709L - South Norway v11.50
2037 Garmin Topo Transalpine V2
2043 GB Discoverer 1:50K Northern England & Midlands
2044 City Navigator Southeastern Asia NT v4.50
2046 City Navigator Australia & New Zealand NT 2010.2
2048 City Navigator Indonesia NT v5.01
2049 City Navigator Southeastern Asia NT 2009.30 10.09
2050 City Navigator Singapore/Malaysia NT 2009.31
2051 Garmin City Navigator North America NT 2010.30
2055 City Navigator Russia NT 2010.20
2058 Friluftskartan Pro v2 - Norra Norrland 
2061 CarpathianTopoMap
2061 Taiwan City Navigator CHT NT 2009.40 w/LaneInfo
2066 City Navigator NT Brazil 2010.30
2066 CityXplorer Rio de Janeiro 2010.30
2066 CityXplorer Sao Paulo 2010.30
2067 City Navigator Australia & New Zealand NT 2010.30
2086 City Navigator Southern Africa NT 2011.10
2087 China City Navigator NT 2010.21
2082 Hong Kong/ Macau, Guangdong chinese version
2090 Hong Kong/ Macau, Guangdong english version 7.61 
2093 City Navigator Egypt NT 2011.10
2093 City Navigator Middle East NT 2011.10
2093 City Navigator Middle East & Northern Africa NT 2011.10
2093 City Navigator Morocco NT 2011.10
2096 Taiwan City Navigator CHT NT 2010.11
2097 Taiwan City Navigator CHT OF 2010.11
2098 Taiwan Topo CHT NT 2010.11
2099 Taiwan Topo CHT OF 2010.11
2119 Taiwan City Navigator CHT NT 2010.20
2125 City Navigator Singapore/Malaysia NT 2010.20
2126 City Navigator China NT 2010.30
2135 City Navigator Indonesia NT 2010.20
2200 City Navigator Europe NT 2010.30
2201 City Navigator North America NT 2010.40
2204 City Navigator Europe NT 2011.10
2206 City Navigator Brazil NT 2011.10
2208 City Navigator Israel NT 2011.10
2210 City Navigator Australia & New Zealand NT 2011.10 
2211 City Navigator North America NT 2011.10
2215 Topo Deutschland DVD 2010
2261 City Navigator Brazil NT 2011.20
2265 City Navigator North America NT 2011.20
2266 City Navigator Europe NT 2011.20
2300 Mauritius_IM
2599 Orlando 7-Park 
3072 TrafficMaster UK
3261 Arizona Topo
3344 Baghdad
3400 Kabul Metro Navigator v1.04
3567 Marokko-Topo
4227 NW USA Topo
4641 Colorado Topo Maps
4642 Wyoming Topo Maps
4643 Utah Topo Maps
4644 Belarus NT kartaby
4644 Montana Topo Maps
4710 Mexico E32 2010
4807 * Topo_PL_100 v.0803
4857 Dorogi Belarus NT kartaby
5025 Quebec Complet 1/20000
5028 OFRM Bulgaria v4.90a 
5031 CCDGold Plus by CCD 
5036 Himalaya By Bike GPS Atlas v 1.0 {pid25}
5036 Mexico GPS Atlas 2.0
5038 Lebanon V1_05,Al-Quhtani
5040 Onroute Wandelkaart 1.11
5041 Japan RoadNavi 25000 v2.10 (PID:22) (v2 on server)
5050 TRAK Ontario-Quebec Lakes-Lacs Québec-Ontario V4.1
5060 Singapore SG-R v3.83D JOH-R v2.75D
5061 MSM-BorneoG 2.30 Gold 
5062 GM-Malaysia/Singapore v2.29 Gold
5065 Cambodia
5065 Thailand 5.50
5065 Thailand East (PID:0)
5065 Thailand South (PID:0)
5065 Thailand West (PID:0)
5068 Panama Street Map 3.2.6
5069 Panama Topo 25 M Elevation Contours
5080 LatinoAmerica GPSAtlas 2010V1.0 
5080 Mexico GPS Atlas 2008 v3.2
5084 Lebanon 2010
5095 Colombia by GISCO 2009
5099 for sabah and sarawak
5099 GM-North Borneo v2.28
5120 Estonia EOMAP Eesti Teejuht 2009 1.5
5140 Onroute Wandelkaart NL 1.11
5141 Onroute Motorkaart BeNeLux v1.00
5142 Netherlands Bicycle map - Onroute Fietskaart NLv1.61
5161 Bolivia Bolmap R9
5172 Bolivia BolmapR11
5312 Crimea v1.64
5620 Slovakia Roads
6200 [navigasi.net] Indonesia Map v1.70
6427 Minnesota Topo v1.0
6436 New York Topo
7351 Tracks 4 Africa
7636 Cyprus_cymps.com
7670 OpenStreetMap Cyprus 
7801 Tracks4AustraliaPro 1.20
8000 T4A Maps 6.07 (Data members)
8001 T4A Swaziland v9.10
8002 T4A Mozambique/Malawi v9.10
8003 T4A Morocco/Western Sahara v9.10
8004 T4A Maps Kenya/Tan/Uganda v9.10
8005 T4A Ethiopia/Sudan/Egypt/Somalia v9.10
8006 T4A Botswana v9.10
8007 T4A Western Cape/Northern Cape 9.10
8008 T4A Gauteng/North West/Limpopo/Mpumalanga 9.10
8009 T4A RSA_ Free State_Eastern Cape_KZN v9.05
8010 T4A Namibia/Angola v9.10
8011 T4A Zambia/Zimbabwe v9.10
8012 T4A Lesotho v9.10
8013 T4A Tunisia/Libya/Algeriav9.10
8014 T4A Western Africa v9.10
8899 Turistautak (Topo Hungary)
9106 T4A Maps - Kruger National Park
9292 Pakistan PKmaps v2.0
10719 Open Topo 2 Pyrénées
12001 Bulgaria BGRoutingMap 3.3 Lat
12002 Bulgaria BGRoutingMap 3.2 Cyr
12080 Mexico GPS Atlas 2010 v 5.3
12140 Philippines Roadguide v1.08
12270 Sea Maps East Coast South America CCD Gold Plus - Full Regions - 2010.5
12302 TRAK Marine V5.0.1
12311 Navsat Costa Rica Retail 5.07
12450 Colombia Ruteable by GISCO V.10.06
12711 Tunisia ncastelao
17440 GB Discoverer 1-50K Northern England and Midlands NT
20095 Iran Routable Map 
28992 TTN (US) TMC
30506 TopoLusitaniaV083
48059 Israel HolylandTourismMap
60001 T4A Maps South Africa - Drakensberg Region - Hiking Trails v3.00
(From http://www.noeman.org/gsm/garmin-tutorials-discussions/48040-all-garmin-maps-mapids.html)
''Requires:'' ?
''Usage:'' {{{--family-name=NAME}}}
''Description:'' The family name is the CD set name shown in MapSource when you go to the Map Product Manager
In the GPSr, when you go to map, Menu->Setup map, the map tiles are listed as either: 
*{{{[--description], [--family-name], [Month/Year of map compilation]}}} if you used sendmap to create the gmapsupp.img; or 
*{{{[--description], [--area-name], [Month/Year of map compilation]}}} if you use mkgmap to create a gmapsupp.img file then copy this manually to the SD card.

When you use Sendmap to transfer a file created with mkgmap, whatever was defined in {{{--family-name}}} is listed as the "Region" in Sendmap.

[[This page|http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q3/003380.html]] suggests that family-name gives the mapset name on the GPS, though I'm not sure this is true.
''Requires:'' ?
''Usage:'' {{{--frig-roundabouts=n}}} where n is an optional factor that influences how far the new points are away from the centre of the roundabout.  By default {{{n=0.25}}}
''Description:''  Use this option to improve GPS behaviour around roundabouts.  Viz, sometimes the GPS when routing will tell you to leave a roundabout at the wrong exit.  This switch attempts to avoid that behaviour.

General opinion seems to be that this switch is no longer needed: http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q4/006090.html
''Requires:'' r1752
''Usage:'' {{{----generate-sea:options}}}
''Options:'' a comma-separated list of options, as described below
* {{{multipolygon}}}: generate the sea using a multipolygon approach.  This is the default behaviour of {{{--generate-sea}}}.
* {{{polygons}}}: generate the sea by filling the whole tile with a sea polygon, then overlaying land polygons as defined by any {{{natural=coastline}}} ways in the OSM data.  For this to work, you have to use a TYP file and define a suitable land polygon to be used in the polygonsStyleFile matching the natural=coasline tag.  This polygon must have a higher draw priority than the sea polygon. e.g.
** {{{natural=sea [0x32 resolution 12]}}}
** {{{natural=land [0x27 resolution 12]}}}
* {{{no-mp}}}: identical to {{{polygons}}}
* {{{no-sea-sectors}}}: when the coastline doesn't reach the tile boundary, don't draw a sea polygon.  This is useful when your OSM extract doesn't contain complete coastline information and where otherwise the tile would be "flooded".
* {{{extend-sea-sectors}}}: if this option is set, coastlines not reaching the borders of a map will be extended with a point at the nearest border.  This prevents strange things happening at the borders of geofabrik extracts.
* {{{close-gaps=number}}}: close any small gaps (of length {{{number}}} metres) in the coastline.  ''Example usage'': {{{-generate-sea=no-mp,no-sea-sectors,close-gaps=1000}}}
* {{{floodblocker}}}: enable an algorithm that attempts to avoid drawing sea where it shouldn't be drawn (i.e. "flooding").  The algorithm checks whether the area in question contains streets and if it does, the area is assumed to be land.  {{{floodblocker}}} works in conjunction with {{{fbgap}}}
* {{{fbgap=number}}}: when determining whether an area contains streets, use {{{fbgap=number}}}, where {{{number}}} is a distance in metres, to define a tolerance threshold.  Any street closer to the area than {{{number}}} will be ignored.
* {{{fbthres=number}}}: set the minimum number of streets that must be contained in an area before it is considered to be land.  The default is 20.  The floodblocker algorithm also counts the total number of points considered to be sea-related and land-related.  n(bad) is the number of land points less the number of sea points.  The floodblocker will not generate a sea polygon if n(bad)<{{{fbthres}}}
* {{{fbratio=number}}}: if the ratio of n(bad):total number of points is less than {{{fbratio}}} then a sea polygon is not generated.  By default {{{fbratio}}} is 0.5
* {{{fbdebug}}}: enable debugging of the floodblocker

''Description:'' draws the sea, where appropriate
''Requires'': splitter r95 or newer
''Usage'': {{{--geonames-file=cities<xxx>.zip}}} where {{{cities<xxx>.zip}}} is downloaded from  http://download.geonames.org/export/dump/.  I use the cities15000.zip file
''Description:'' Lets you specify that splitter should use a specific file to determine the descriptions for each tile that it creates.  Splitter will set the tile [[--description]] to the format country_code-largest_city, e.g. DK-Copenhagen, or UK-Cardiff
''Requires:'' probably available in most iterations of mkgmap
''Usage:'' {{{--gmapsupp}}}
''Description:'' packages various map tiles and a TYP file (if used) into a single file named gmapsupp.img, which can be uploaded into a Garmin GPS unit.  See http://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin/IMG_File_Format for more details on this file and its contents.
''Usage:'' {{{--help}}}
''Description:'' Prints out a short description of every command line option available for mkgmap and how to use it.  In other words, a shorter version of this Wiki.
''Why might you use this?'': To understand what command-line options are available in mkgmap, and how to use them
''Requires:'' ?
''Usage:'' {{{--ignore-builtin-relations}}}
''Description:'' Stops mkgmap from processing multipolygons.
From: r1039 onwards
Causes any maxspeed tags to be ignored when creating routing information
Ignores any OSM bounds tags in a data file.  You'd only need to use this switch if:
# You created an OSM file by combining multiple areas in JOSM; or
# You split OSM data using Osmosis
When reading OSM files, ignore any "restriction" relations.
You'd probably only use this if you're creating maps that don't require car-based routing (as turn restrictions generally apply only to motorised vehicles).
''Usage:'' {{{--index}}}
''Description:'' Generates MDR index files which means that the produced map can then be searched for addresses.  The address information in the index file is gathered from special mkgmap address tags that are assigned in the style files.  The relevant tags are:///
In other words, your style file (the points one, most likely) must assign values to these special tags using existing OSM tags (e.g. address:street).  If your style file doesn't do this, then the index file will not contain any useful information.  Note that the mkgmap default style //does// assign address values, so take a look at this if you want to see what it is doing.
* GPS units
**If combined with [[--gmapsupp]] then a gmapsupp.img file is created which can be used on your GPS (and which will be searchable).  
*MapSource or BaseCamp
**Alternatively, use the [[--tdbfile]] option if creating a map for BaseCamp or MapSource.  If you install a map into MapSource using MapSetToolkit and the map was compiled using the {{{--index}}} switch, MapSetToolkit will automatically include the index file in the installation.  You should then find that you can search ("Find places") in MapSource without having to do anything else.
''Requires:'' ??
''Description:'' Tells mkgmap to continue processing, even if a Java exception occurs during a map compile.
''Requires:'' ?
''Usage:'' {{{--latin1}}}
''Description:'' This option allows the use of non-ascii characters in street names. It is hardware dependant what is actually supported on	a particular device. Some devices can only do ascii characters for example. Mkgmap goes to some length to convert un-displayable characters however and by default (without this option) it will transliterate characters to unaccented ascii characters where possible.

This switches to 8-bit mode (or something) which uses different byte codes for the highway symbols. It is possible that there are errors in the 6-bit codes. http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q3/003046.html

''Requires:'' r2126
''Usage:'' {{{--license-file=foo}}}
''Description:'' Specifies a file (//foo//) which contains text to be used as the licence for the generated map.

See also [[--copyright-message]].
POIs that are situated at a point in a way will be associated with that way and may modify the way's properties. Currently supported are POIs that restrict access (e.g. bollards). Their access restrictions are applied to a small region of the way near the POI. 

In other words, nodes in a way can influence the way as it is converted into a Garmin type.

Also, ways will be flagged as having POIs by adding a mkgmap:way-has-pois tag.

''Requires:'' ?
''Usage:'' {{{--location-autofill=option1, option2}}}
''Description:'' Determines how to guess address information for POIs that do not already have that information stored (in addr: tags).  The available options are:
Uses is_in tags in the OSM objects to infer address information.
Looks for the nearest city or hamlet and uses the information associated with that point to populate the address of the POI in question.

!Algorithm for is_in option
From http://svn.parabola.me.uk/mkgmap/trunk/src/uk/me/parabola/mkgmap/build/Locator.java
# Go through all cities and check if they have useful country region info. The best case is if the tags is_in:country and is_in:county are present that's easy.  Some cities have is_in information that can be used.  In "openGeoDb countries" this info is pretty reliable since it was imported from anexternal db into osm. Other countries have very sparse is_in info.  All cities that have such info will end up in "city" list. All which lack such information in "location" list.  We check for three different formats:
** County, State, Country, Continent
** County, State, Country
** Continent, Country, State, County, ...
# Go through the "location" list and check if the is_in info has some relations to the cities we have info about. Hamlets in particular often have no full is_in information. They only have one entry in 	is_in that points to the city they belong to. I will check if I can find the name of this city in the "City" list. If there are more with the same name I use the closest one. If we can't find the exact name I use fuzzy name search. That's a workaround for german umlaute since sometimes there are used in the tags and sometimes there are written as ue ae oe. 
# Do the same like in step 2 once again. This is used to support at least one level of recursion in is_in relations. If there is still no info found I use brute force and use the information from the next city. Has to be used for countries with poor is_in tagging.

!Empirical results
Using 63240005 Greater London
{{{Battersea, LONDON | Wandsworth, LONDON}}}
** Uses [[--region-abbr]] - this is the same as setting [[--location-autofill]]=0

{{{Battersea, LONDON | Wandsworth, LONDON}}}
** Uses [[--region-abbr]]

{{{Battersea,Uk | Wandsworth, Uk}}}
** Presumably if I stipulated [[--country-abbr=GBR]] then this would be reflected in the above
{{{Battersea,Uk | Wandsworth, Uk}}}

First announcement of code: http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q1/000629.html

From http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q1/001427.html
is_in tagging is not very reliable in most countries. I did the best to get reasonable results but on the long term the only solution is to fix the tags. Right now mkgmap supports the following formats:

   County, State, Country, Continent
   County, State, Country
   Continent, Country, State, County, ...

To make it working mkgmap needs to know the valid country keywords. This could be configured in LocatorConfig.xml. I have attached a version that contains entries for Spain.

Additionally I check for the following individual tags:

City -> addr:city
Zip  -> addr:postcode
Street -> addr:street
House Number -> addr:housenumber      
Phone -> phone     
Country -> is_in:country or addr:country
Region -> is_in:county
So I think you might want to use the is_in:county tag for your purposes. I support this tag since it existed in UK. I don't think that is_in:region is a wide used tag. Right now this stuff is hard coded in the method elementSetup of StyledConverter.java. I know that is not nice and should be part of a configuration file.
Allows lower-case labels on some GPSr units.  This is unit-dependent.  In any case, the IMG file always has to have upper-case only labels and MapSource or the GPSr will then lower-case all but the first letter, so it's only a pseudo-fix.

Some GPS units can show lower-case letters, but are not able to rotate them.

The lower-case option anyway only does anything if you give a codepage (which happens if you stipulate [[--latin1]] as an option to mkgmap
''Usage:'' {{{--make-all-cycleways}}}
''Description:'' Enable all options that create specific cycleways using OSM data
''Usage:'' {{{--make-cycleways}}}
''Description:'' Where the OSM data for a street indicates that there is a cycleway running down a street, this option tells mkgmap to create a duplicate way on top of the street but which only permits bicycle traffic.  The access rules for the underlying street are then modified to forbid bicycles (so that this street won't be used by the GPS or MapSource routing engines).
''Requires:'' ??
''Usage:'' {{{--make-opposite-cycleways}}}
''Description:'' Where the OSM data contains a street that indicates there is a cycleway running in the opposite direction to the oneway sense, this option will create a new cycleway line running in the opposite direction to the main street.
''Requires:'' ?
''Usage:'' {{{--mapid NUM}}} where NUM is an 8 digit number
''Description:'' Sets the filename for the various split files. E.g. invoking {{{splitter --mapid 63240001}}} will cause the first file to be called 63240001.osm.gz, the next one 63240002.osm.gz and so on.
Sets the 8-digit filename that is used for the output img file.  Each tile that is loaded into the GPSr must have a different filename.  Note that I have started to categorise different countries with different codes.

The default is 63240001. It is best to change the name if you are going to be making a map for others to use so that it is unique and does not clash with others.
''Usage:'' {{{--max-areas=NUM}}} where {{{NUM}}} is an integer from 1 to 255
''Description:'' Controls the maximum number of areas that can be processed in a single pass during the second stage of processing.  Higher numbers mean fewer passes over the source file and hence quicker overall processing, but also require more memory. If you find you are running out of memory but don't want to reduce your [[--max-nodes]] value, try reducing this instead.  Changing this will have no effect on the result of the split, it's purely to let you trade off memory for performance.  

Note that the first stage of the processing has a fixed memory overhead regardless of what this is set to so if you are running out of memory before the areas.list file is generated, you need to either increase your [[-Xmx|javaOptions]] value or reduce the size of the .osm file you're trying to split.

When checking flare roads, ignore roads whose length is greater than {{{NUM}}} (an integer) times the distance between the nodes on the roundabout that the flare roads connect to. Using this option with a value of at least 5 will cut down the number of legitimate roads that are flagged as flare road
problems. Default value is 0 (disabled) because it's not a completely reliable heuristic.
''Usage:'' {{{--max-nodes NUM}}} where {{{NUM}}} is an integer.  The default is 1600000 (1.6 million)
'''Description:'' This sets the maximum number of nodes that can be in any of the split tiles. The reason for doing this is that mkgmap crashes when tiles contain too much information.  A quick (but crude) way of limiting the information in a given tile is by capping the number of nodes.  The bigger the value of {{{NUM}}}, the more memory required during the splitting stage.  

The best way to use {{{--max-nodes}}} is not to use it initially (as this will result in fewer tiles).  If you find that mkgmap crashes, progressively lower {{{--max-nodes}}} and re-run splitter.  Some regions require very low values of {{{--max-nodes}}} to work, e.g. Denmark requires a value of 800000 (800 thousand) due to the high information density.
''Requires:'' ?
''Usage:'' {{{--max-threads=NUM}}} where NUM is an integer number of CPUs
''Description:'' Works in a similar way to mkgmap's [[--max-jobs]] switch i.e. controls how many parallel processes run at the same time.  If you do not stipulate {{{NUM}}} all available CPUs will be used.
''Requires:'' revision 1410
''Description:'' Where a road is split into several ways in the OSM data, {{{--merge-lines}}} recombines them into a single way, if it makes sense (e.g. if the two ways have the same name and ref).

This option helps the simplify filter (which uses a Douglas-Peucker algorithm) to straighten out longer chunks at lower zoom levels. The effect of using this option is to decrease file size & increases redraw speeds at low zoom levels (i.e. when zoomed out).

''Requires:'' r1621 or greater. ''Reverted in r1624 and no longer available''
''Usage:'' {{{--min-line-size=x}}} where x is an integer (by default x=1)
''Description:'' Allow the user to specify the minimum size in pixels of line and polygon features ((see also [[--min-polygon-size]]).  Features smaller than that at a given zoom level are dropped.
''Requires:'' r1621 or greater.   ''Reverted in r1624 and no longer available''
''Usage:'' {{{--min-polygon-size=x}}} where x is an integer (by default x=8)
''Description:'' Allow the user to specify the minimum size in pixels of line and polygon features ((see also [[--min-line-size]]).  Features smaller than that at a given zoom level are dropped.
''Requires:'' r1893 or greater.   
''Usage:'' {{{--min-size-polygon=x}}} where x is an integer (by default x=8)
''Description:'' Allow the user to specify the minimum size in pixels of polygon features.  Features smaller than that at a given zoom level are dropped.  This is an optimisation option that reduces map size by removing polygons that are too small to see.
''Usage:'' {{{--mixed}}}
''Description:'' To be used if you are splitting a contour file created by [[srtm2OSM]].  This switch tells splitter that the the input file structure has mixed nodes, ways and relations (rather than them being in a strict order as they would be if downloaded from OSM).
Use to specify which name tags to use when a node has multiple names.  E.g. London can be specified using English, Spanish (Londres), Italian (Londra) etc.  Using {{{--name-tag-list}}} you can tell mkgmap to use the tags of a specific language, e.g. name:en for English name tags.
Stops mkgmap adding address information to POIs.
* See http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q1/001024.html
''Usage:'' {{{--nsis}}}
''Description:'' Create a Nullsoft Installation file that allows a map to be auto-installed into MapSource on computers running Windows.  Useful if you want to distribute maps to people who don't have (or want) the technical expertise to install the maps manually using MapSetToolkit.
''Requires:'' r1671
''Usage:'' {{{--output-dir=foo}}} where foo is the full path to a directory
''Description:'' Causes mkgmap to put all output files in the given directory, rather than in the directory of the input files (which is the default behaviour).
Text displayed in the "Area" column in User Data Tabs in Mapsource when a map is selected for upload. Stored in TDB file and in overview map. 
Uploaded to GPSr when the combined map is created during upload.

Unless specified differently, this seems to show whatever was set by either  [[--series-name]], [[--family-name]] or [[--area-name]] (I can't tell as I set them all to the same thing).
You need an overview map if you want to load a mapset into MapSource (e.g. using MapSetToolkit).  The default map name is osmmap.  This option only has an effect if you also use [[--tdbfile]]
If [[--tdbfile]] is specified, this gives the internal 8 digit number used in the overview map and tdb file.  The default number is 63240000.
''Requires:'' r2049
''Usage:'' {{{--pois-to-areas-placement=taglist}}}
''Description:'' Used to define how the [[--add-pois-to-areas]] option should work in terms of POI placement.  //taglist// is a semi-colon-separated list of tag=value pairs.  By default, if //taglist// is not given then it is assumed to be //entrance=main;entrance=yes;building=entrance//.  In other words, by default a POI created using [[--add-pois-to-areas]] will place the POI on the node tagged with entrance=main, and if that doesn't exit then on the node tagged entrance=yes, and if that doesn't exist on the node tagged building=entrance.  If none of these tags exist then the POI is placed in the centre of the polygon
''Requires:'' r2278
''Usage:'' {{{--precomp-sea=directory}}}
''Description:'' Directs mkgmap to use the sea information in //directory// rather than generate sea internally (using the [[--generate-sea]] option).  When this option is defined all natural=coastline tags in the input OSM tiles are ignored and the precompiled data is used instead. If the """-precomp-sea""" option is used, then the [[--coastlinefile]] option is ignored.

Sea generation is problematic, as small errors in the coastline can result in entire tiles being "flooded".  To avoid these problems, you can use a precompiled sea that has been double-checked to ensure there are no flooded areas.  That is what this option is for.  Whilst you could generate the sea tiles yourself, the process is slow and you would be better advised to download a precompiled version.  One source is:
http://www.navmaps.eu/wanmil/ : the relevant file is named //sea_yyyymmdd.zip//.
''Requires:'' r950ish +
''Usage:'' {{{--preserve-element-order}}}
''Description:'' Maps are drawn with each element in turn as per the order stipulated in the original OSM file.  If this switch is not used, elements seem to have a non-defined order.  If this switch is used, elements are drawn in the order they are found in the OSM file.  Thus by tweaking the OSM file you can control what gets drawn on top of what.
''Requires:'' r1633
''Usage:'' {{{--process-boundary-relations}}}
''Description:'' By default OSM multipolygon boundary relations are not processed because they tend to be incomplete as a result of splitting using splitter.  This option changes the default behaviour so that when reading OSM files, boundary relations are processed.  When incomplete boundary relations are found, additional artificial boundary lines are created on the tile bounds so that whole polygons can be created. 
''Requires:'' r2372
''Usage:'' {{{--process-destination}}}
''Description:'' Garmin defines two special line types (0x08 and 0x09) as high and low-speed ramps respectively.  These are the on and off-roads to motorways etc, often part of an "exit" or "junction".  Certain Garmin units can use the name of the first way //after// an 0x08 or 0x09 line to create special "exit" instrutions during navigation.  For example, if the road //after// the ramp is called "Murson Drive" then the GPS may advise you to "exit the motorway to Murson Drive" or some variant, depending on the GPS unit.  

The problem is that in OSM world, the destination information is assigned to the ramp, not to the way after the ramp.  This option therefore fixes the problem by copying the //destination// information from the 0x08 or 0x09 ramp to the following way, so that Garmin GPS units will use it in directions.
''Requires:'' ?
''Usage:'' {{{--product-id=X}}}
''Description:''  As far as I can tell, {{{X}}} should always be set to 1.
''Requires:'' ?
''Usage:'' {{{--read-config FILENAME}}}
''Description'': Same as [[-c]] option: {{{FILENAME}}} is a text file containing the various command switches you want to apply to the mkgmap compile. 
''Requires:'' r1410
''Usage:'' {{{--reduce-point-density=X}}} 
''Description:'' Controls the aggressiveness of the Douglas-Peucker filter that smooths lines as you zoom out (i.e. when you zoom out, lines become smoother as the detail within the line passes below visible resolution).   {{{X}}} is the maximal allowed error distance, by which the resulting way may differ from the original one.  This distance gets shifted with lower zoom levels.  (Default is 2.6, which should lead to invisible changes).  ''NB'' Very aggressive settings might cause tooltips to show up slightly away from the mouse (the tooltip will show up where the road would be in resolution 24)
Recommended value (if used at all): 5.4


''Requires:'' r1877
''Usage:'' {{{--reduce-point-density-polygon=NUM}}}
''Description:'' Applies a simplifying filter to polygons, so that as you zoom out and details become very close together, they are simplified away.  This reduces the number of vertices to the polygon and thus increases the redraw time as well as reducing the map size.
The recommended setting for {{{NUM}}} is 4
The default setting for {{{NUM}}} is 2.6
''Why might you use this?'': This is an optimisation that reduces map size and increases display performance

See also:
* [[--merge-lines]]
* [[--reduce-point-density]]
''Requires:'' ?
''Usage:'' {{{--region-abbr=XXX}}}
''Description:'' Set the 3-letter abbreviation ({{{XXX}}}) for the region of the map or map tile.  By default, the map has no abbreviated region name.  Note that it's not clear what sort of "region" we're talking about.  i.e. is it Oxfordshire/Piemonte/Languedoc-Roussilon level, or is it Europe/N. Africa/Asia level?).
''Requires:'' ?
''Usage'': {{{--region-name=XXXXXXX}}}
''Description:'' Sets the map's region name ({{{XXXXXXX}}}). By default, the map has no region name.  The [[--location-autofill]] tag uses the region name if it can't find a region for a city using the city's OSM is_in tags, so it should be set to the country name if this is what you want to appear in POI address info..
PATCH, not yet committed
Removes routing nodes from ways that should never have been put there in the first place. Without this patch, a routable way
will have a node for each of its points that are shared by any other way (whether the other ways are routable or not). For example, at the moment, if a way shares its points with a boundary line or shape, each of those points will become nodes. From the routing point of view, that's (essentially) harmless but having extra nodes does take up space and must slow down the routing calculation.

It therefore makes sense to remove the bogus nodes.

What this patch does is defer the processing of all of the points/lines/shapes until after their types have been computed. Having
computed the ways' types we know what's routable and what isn't so nodes only need to be created where routable ways meet.
''Requires:'' ?
''Usage:'' {{{--remove-short-arcs[=MinLength]}}}
''Description:'' Merge nodes to remove short arcs that can cause routing problems. If {{{MinLength}}} is specified (in metres), arcs shorter than that length will be removed. If {{{MinLength}}} is not specified, only zero-length arcs will be removed.
Recommended value (if used at all): 2.8
''Requires:'' v1304 or greater
''Usage:'' {{{--report-dead-ends=LEVEL}}}
Set the dead end road warning level. The value of LEVEL (which defaults to 1 if this option is not specified) determines those roads to report: 
* 0 = none
* 1 = multiple oneway roads that join together but go nowhere
* 2 = individual oneway roads	that go nowhere.
''Description:'' Produces warnings related to one-way roads that have 'no escape'

''From:'' r1282 (http://www.mail-archive.com/mkgmap-dev@lists.mkgmap.org.uk/msg02766.html)
''Usage:'' {{{--report-similar-arcs}}}
''Description:'' Issue a warning if more than one arc exists between two nodes and the arcs follow similar (hopefully, identical) paths.
''Details:'' presumably this helps identify overlapping ways in the underlying OSM data
''Requires:'' r1355 or greater (http://www.mail-archive.com/mkgmap-dev@lists.mkgmap.org.uk/msg03203.html)
''Usage:'' {{{--report-undefined-nodes}}}
''Description:'' Missing nodes can break routing so this is a useful check if you are having problems.  Requires WARNING logging level for the Osm5XmlHandler class.
''Requires:'' ?
''Usage:'' {{{--resolution NUM}}} where {{{NUM}}} is a number from 12 to 24 (though you'll probably want to stick to 12 or 13).
''Description:''  Represents the lowest zoom level specified in your style file and dictates what boundaries to align the split tiles on. By default it is set to 13 which equates to tiles on boundaries of 2048 map units, and tiles with width/height in multiples of 4096 units. See [[here|http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q3/003364.html]]
''Requires:'' ?
''Usage:'' {{{--road-name-pois[=GarminCode]}}}
''Description:'' Generate a POI of type {{{GarminCode}}} (must be hexadecimal) for each named road. By default if {{{GarminCode}}} is not specified, this option will use Garmin type code 0x640a.  But if desired, a different type code can be specified with this option.  This is a kludge which lets you search for roads as if they were POIs in your GPS or in MapSource.
If you use this code, then the map will be littered with little dots for each road.  To solve this:
# Select a transparent code, or 
# Create these POIs as a layer with lower draw priority than the main map

''Requires:'' ?
''Usage:'' {{{--series-name=XXXXXXX}}}
''Description:'' Sets the product name displayed in the "Select a Product" drop down list in MapSource. This information is stored in the TDB file and therefore not used by the GPSr.  The default value if this switch is not used is "OSM Map"
''Requires:'' ?
''Usage:'' {{{--show-profiles}}}
''Description'': The {{{--show-profiles}}} switch enables use of contour info for route profiles.  This means that your map must have contour information in it --and it must be in the same layer as the rest of the data (i.e. no multi-layer maps)-- and this will work even if your contour data are in a different layer (verified 22/2/2011).  On top of that, your contours must use Garmin types 0x20, 0x21 and 0x22 for the contours in order for this switch to work (check your lines style file).  Finally, this means that if you have a custom TYP file that re-uses 0x20, 0x21 and 0x22 for other purposes, {{{--show-profiles}}} will not work.
''Usage:'' {{{--split-file=FILENAME}}} where {{{FILENAME}}} is the name of a file containing area definitions
''Description:'' Lets you define a set of areas (and therefore map tiles), rather than have splitter work them out automatically. E.g. {{{--split-file=areas.list}}} will use a file called areas.list which should define each tile (and its description, mapid etc).  When splitter is run without specifying {{{--split-file}}} you will see that once it has finished it creates an areas.list file documenting the bounding boxes of the tiles it automatically created.  If you want to use your own areas.list file, it's easiest to start with such a file and edit it to your liking.
''Requires:'' r0, pretty much
''Usage:'' {{{--style-file=foo}}}, where {{{foo}}} is the path to a directory containing a custom style
''Description:'' If you want mkgmap to process OSM data using a custom style, rather than the inbuilt defaults, you need to use this switch.  It tells mkgmap where to find your custom style.
Doesn't look like this is in the trunk source code.  It's just a patch that people occasionally use.
''Usage:'' {{{--tdbfile}}}
''Description'': Tells mkgmap to create a TDB file that is required if you want to load a mapset into MapSource.
''Requires: ''?
''Usage: '' {{{--transparent}}}
''Description:'' Make the map transparent, so that if two maps are loaded that cover the same area, you can see through the map that was created using the {{{--transparent}}} switch and see the map beneath.  {{{--transparent}}} is only of use for GPS devices and should not be used when creating maps for MapSource as the results can be unpredictable.
''Requires:'' ?
''Usage:'' {{{--tweeze-arc-headings}}}
Has have been superceded by [[--adjust-turn-headings]]
''Description:''  Also includes the drive-on-left patch because it's based on that attempts to improve the quality of routing instructions so that when a turn off a road that doesn't involve a big heading change is required, the GPS should say "turn left/right" rather than "keep left/right". It can also reduce the number of "keep left/right" instructions you get when you are not leaving the main road but passing a junction that has a shallow turn (e.g. sometimes happens on motorways when it tells you to keep left/right even though you are not leaving the motorway).

NB Not sure if this is main trunk

''Usage:'' {{{-c options_file}}}
''Description'':  {{{options_file}}} is opened and processed by mkgmap.  Each line in {{{options_file}}} is an option setting of the form {{{option:value}}}
Any option that could be used on the command line can be used, however you omit the leading """--""" and use a colon (:) instead of an equals (=) sign to set any switch values.  Note that any short option names with a single hyphen (e.g. -n) cannot be used in {{{options_file}}}.

Note: mkgmap will process command-line options from left to right.  Thus any options given in the command line after "-c filename" will override any options given in the file stipulated.  Likewise, command line options specified before "-c filename" will be overridden by anything in the stipulated option file.

See also [[--read-config]]
Maps have a drawing priority which you can set with mkgmap (using the [[--draw-priority]] switch). If you have two layers in your mapset then [[--draw-priority]] controls which map gets drawn on top of the other. You may need to combine drawing priority with the mkgmap [[--transparent]] option so that one layer isn't hidden behind another.

!Drawing order on GPS
1. Polygons
** The draw order of individual polygon types is defined by the draw order in the TYP file if you're using one, else it uses Garmin's default
** Polygons are always drawn before lines, no matter which layer they may be in
2. Lines 
** If you have multiple layers to your map, the lines are drawn in order of each layer (starting from the lowest).
** Within a layer, lines are drawn in an order defined by their type (e.g. railways always get drawn on top of roads).  I haven't found a definitive description of the relative order of different line types
3. POIs
** Drawn last, on top of polygons and lines
!Drawing order in """MapSource"""
 MapSource does not care about [[--draw-priority]]. It simply draws map tiles in the order of their [[--mapname]].   Thus you should ensure that layers with higher draw priority (i.e. which should appear above other layers) also have higher mapnames.
| Name:|~TagglyTaggingEditTemplate |
| Version:|1.1 (12-Jan-2006)|
| Source:|http://simonbaird.com/mptw/#TagglyTaggingEditTemplate|
| Purpose:|See TagglyTagging for more info|
| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|
<div class="toolbar" macro="toolbar +saveTiddler closeOthers -cancelTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<div class="editor" macro="edit text"></div>
A map installed into MapSource can only have one [[FamilyID|--family-id]]

A 'product' is a a given map, e.g. ''CityNavigator Europe''

Each 'product' has an overview map (only used in MapSource) and one or more detailed maps (the individual tiles).
Internally, these map sets are configured using data in the Windows registry. Each product requires three registry entries. One entry points to the preview map, one to a 'tdb' file, and one to the location of the detail maps. If you wish to install a custom map set into MapSource, you will need to (a) create the overview map and the tdb file, and (b) create the registry entries to tell MapSource where your files are located. Rather than fiddle with the registry, use MapSetToolkit to install maps into Mapsource.
''Download:'' from http://www.geopainting.com/en/
''Usage:'' lets you edit map files

''Download:'' from http://www.naturegps.fr/viewtopic.php?f=19&t=961
''Usage:'' shows the Garmin colour palette
''Details:'' use the dropper to select a colour that you want to use in your TYP file.  If it's not in the Garmin palette, an exclamation mark appears and you can then select the nearest colour that is in the palette.
!Adding highway shields
To do this you need to add highway-symbol prefixes to your lines style file. Example:

{{{highway=motorway {name '${ref|highway-symbol:hbox} ${name}' |
'${ref|highway-symbol:hbox}' | '${name|highway-symbol:hbox}'}}}

From the source code, these are the possible values for highway shields:

>		"interstate" : US Interstate
>		"shield" : US Highway shield
>		"round" : US Highway round
>		"hbox" : box with horizontal bands
>		"box" : Square box
>		"oval" : box with rounded end

The US symbols display only numeric values (e.g., "1", "401", etc).
The others are alphanumeric (e.g. "A5").

See http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q3/002864.html

''NB Might not be available untill mkgmap v1073'/1076''

''NB Might need [[-latin1]] option to work properly''

From mkgmap version 1362 onwards, highway shields were improved as follows:
* If a colon character (":") followed by a number is appended to the highway symbol in the style file, that number will override the maximum length. Example: {{{highway-symbol:box:6}}} sets the maximum to 6 characters.
*If an additional colon character followed by a number is appended to the highway symbol, this second number will be used as the maximum length for alpha only refs. Example: {{{highway-symbol:box:6:4}}} sets the maximum to 6 for numeric and alphanumeric refs, but 4 for alpha only refs.
*I use the following in my style file:  {{{'${ref|highway-symbol:box:6:4}'}}}
This sets the maximum length of alphanumeric shields to be 6 (e.g., M1234a, or 123456), and alpha only shields to be 4 (e.g., ABCD). Such a setting works well for me in the areas I am interested in. 
Rules consist of three components:
- the rule part (like highway=primary)
- the action part (enclose by { ... })
- the type part (enclose by [ ... ])

The rule part is mandatory, but only of the action and type parts are required for any given line.  If there is an action part, you don't necessarily need a type part.  This is how we set highway names in the lines style file in a separate section to where we actually assign the types.

For each node/way/relation mkgmap goes through the tags exactly once and find the earliest rule that matches.  If this rule just performs an action, 
e.g. {{{highway=motorway {name '${ref|highway-symbol:interstate} ${name}' | '${ref|highway-symbol:interstate}' | '${name}' }}}  
then rule matching continues.  But if it assigns an actual Garmin type (line, polygon or POI) then matching stops.

# Where possible always have the same tag on the left.  This will make things more predictable.  
# Always set made-up tag names if you want to also match on them later. For example use {{{mkgmap:mytag}}} or something.  Since the tag is not in the input it cannot possibly have been used yet and so will get its chance later on.  It would have to be the left most term too.

''Download:'' from http://opheliat.free.fr/michel40/Imgtool1.5/
''Usage:'' lets you set transparency, draw priority and associate TYP files with an IMG file
''Details:'' In French
|''Version:''|1.0.2 (2007-07-25)|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IntelliTaggerPlugin Documentation]]|
|''~SourceCode:''|[[IntelliTaggerPlugin SourceCode]]|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''Browser:''|Firefox or better|
!Version History
* 1.0.2 (2007-07-25): 
** Feature: "Return" key may be used to accept first tag suggestion (beside "Alt-1")
** Bugfix: Keyboard shortcuts (Alt+3 etc.) shifted
* 1.0.1 (2007-05-18): Improvement: Speedup when using TiddlyWikis with many tags
* 1.0.0 (2006-04-26): Initial release

// /%
if(!version.extensions.IntelliTaggerPlugin){if(!window.abego){window.abego={};}if(!abego.internal){abego.internal={};}abego.alertAndThrow=function(s){alert(s);throw s;};if(version.major<2){abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");}version.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:2,date:new Date(2007,6,25),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox or better"};abego.createEllipsis=function(_2){var e=createTiddlyElement(_2,"span");e.innerHTML="&hellip;";};abego.isPopupOpen=function(_4){return _4&&_4.parentNode==document.body;};abego.openAsPopup=function(_5){if(_5.parentNode!=document.body){document.body.appendChild(_5);}};abego.closePopup=function(_6){if(abego.isPopupOpen(_6)){document.body.removeChild(_6);}};abego.getWindowRect=function(){return {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};};abego.moveElement=function(_7,_8,_9){_7.style.left=_8+"px";_7.style.top=_9+"px";};abego.centerOnWindow=function(_a){if(_a.style.position!="absolute"){throw "abego.centerOnWindow: element must have absolute position";}var _b=abego.getWindowRect();abego.moveElement(_a,_b.left+(_b.width-_a.offsetWidth)/2,_b.top+(_b.height-_a.offsetHeight)/2);};abego.isDescendantOrSelf=function(_c,e){while(e){if(_c==e){return true;}e=e.parentNode;}return false;};abego.toSet=function(_e){var _f={};for(var i=0;i<_e.length;i++){_f[_e[i]]=true;}return _f;};abego.filterStrings=function(_11,_12,_13){var _14=[];for(var i=0;i<_11.length&&(_13===undefined||_14.length<_13);i++){var s=_11[i];if(s.match(_12)){_14.push(s);}}return _14;};abego.arraysAreEqual=function(a,b){if(!a){return !b;}if(!b){return false;}var n=a.length;if(n!=b.length){return false;}for(var i=0;i<n;i++){if(a[i]!=b[i]){return false;}}return true;};abego.moveBelowAndClip=function(_1b,_1c){if(!_1c){return;}var _1d=findPosX(_1c);var _1e=findPosY(_1c);var _1f=_1c.offsetHeight;var _20=_1d;var _21=_1e+_1f;var _22=findWindowWidth();if(_22<_1b.offsetWidth){_1b.style.width=(_22-100)+"px";}var _23=_1b.offsetWidth;if(_20+_23>_22){_20=_22-_23-30;}if(_20<0){_20=0;}_1b.style.left=_20+"px";_1b.style.top=_21+"px";_1b.style.display="block";};abego.compareStrings=function(a,b){return (a==b)?0:(a<b)?-1:1;};abego.sortIgnoreCase=function(arr){var _27=[];var n=arr.length;for(var i=0;i<n;i++){var s=arr[i];_27.push([s.toString().toLowerCase(),s]);}_27.sort(function(a,b){return (a[0]==b[0])?0:(a[0]<b[0])?-1:1;});for(i=0;i<n;i++){arr[i]=_27[i][1];}};abego.getTiddlerField=function(_2d,_2e,_2f){var _30=document.getElementById(_2d.idPrefix+_2e);var e=null;if(_30!=null){var _32=_30.getElementsByTagName("*");for(var t=0;t<_32.length;t++){var c=_32[t];if(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){if(!e){e=c;}if(c.getAttribute("edit")==_2f){e=c;}}}}return e;};abego.setRange=function(_35,_36,end){if(_35.setSelectionRange){_35.setSelectionRange(_36,end);var max=0+_35.scrollHeight;var len=_35.textLength;var top=max*_36/len,bot=max*end/len;_35.scrollTop=Math.min(top,(bot+top-_35.clientHeight)/2);}else{if(_35.createTextRange!=undefined){var _3b=_35.createTextRange();_3b.collapse();_3b.moveEnd("character",end);_3b.moveStart("character",_36);_3b.select();}else{_35.select();}}};abego.internal.TagManager=function(){var _3c=null;var _3d=function(){if(_3c){return;}_3c={};store.forEachTiddler(function(_3e,_3f){for(var i=0;i<_3f.tags.length;i++){var tag=_3f.tags[i];var _42=_3c[tag];if(!_42){_42=_3c[tag]={count:0,tiddlers:{}};}_42.tiddlers[_3f.title]=true;_42.count+=1;}});};var _43=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_44,_45,_46,_47,_48,_49){var _4a=this.fetchTiddler(_44);var _4b=_4a?_4a.tags:[];var _4c=(typeof _49=="string")?_49.readBracketedList():_49;_43.apply(this,arguments);if(!abego.arraysAreEqual(_4b,_4c)){abego.internal.getTagManager().reset();}};var _4d=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_4e){var _4f=this.fetchTiddler(_4e);var _50=_4f&&_4f.tags.length>0;_4d.apply(this,arguments);if(_50){abego.internal.getTagManager().reset();}};this.reset=function(){_3c=null;};this.getTiddlersWithTag=function(tag){_3d();var _52=_3c[tag];return _52?_52.tiddlers:null;};this.getAllTags=function(_53){_3d();var _54=[];for(var i in _3c){_54.push(i);}for(i=0;_53&&i<_53.length;i++){_54.pushUnique(_53[i],true);}abego.sortIgnoreCase(_54);return _54;};this.getTagInfos=function(){_3d();var _56=[];for(var _57 in _3c){_56.push([_57,_3c[_57]]);}return _56;};var _58=function(a,b){var a1=a[1];var b1=b[1];var d=b[1].count-a[1].count;return d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());};this.getSortedTagInfos=function(){_3d();var _5e=this.getTagInfos();_5e.sort(_58);return _5e;};this.getPartnerRankedTags=function(_5f){var _60={};for(var i=0;i<_5f.length;i++){var _62=this.getTiddlersWithTag(_5f[i]);for(var _63 in _62){var _64=store.getTiddler(_63);if(!(_64 instanceof Tiddler)){continue;}for(var j=0;j<_64.tags.length;j++){var tag=_64.tags[j];var c=_60[tag];_60[tag]=c?c+1:1;}}}var _68=abego.toSet(_5f);var _69=[];for(var n in _60){if(!_68[n]){_69.push(n);}}_69.sort(function(a,b){var d=_60[b]-_60[a];return d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());});return _69;};};abego.internal.getTagManager=function(){if(!abego.internal.gTagManager){abego.internal.gTagManager=new abego.internal.TagManager();}return abego.internal.gTagManager;};(function(){var _6e=2;var _6f=1;var _70=30;var _71;var _72;var _73;var _74;var _75;var _76;if(!abego.IntelliTagger){abego.IntelliTagger={};}var _77=function(){return _72;};var _78=function(tag){return _75[tag];};var _7a=function(s){var i=s.lastIndexOf(" ");return (i>=0)?s.substr(0,i):"";};var _7d=function(_7e){var s=_7e.value;var len=s.length;return (len>0&&s[len-1]!=" ");};var _81=function(_82){var s=_82.value;var len=s.length;if(len>0&&s[len-1]!=" "){_82.value+=" ";}};var _85=function(tag,_87,_88){if(_7d(_87)){_87.value=_7a(_87.value);}story.setTiddlerTag(_88.title,tag,0);_81(_87);abego.IntelliTagger.assistTagging(_87,_88);};var _89=function(n){if(_76&&_76.length>n){return _76[n];}return (_74&&_74.length>n)?_74[n]:null;};var _8b=function(n,_8d,_8e){var _8f=_89(n);if(_8f){_85(_8f,_8d,_8e);}};var _90=function(_91){var pos=_91.value.lastIndexOf(" ");var _93=(pos>=0)?_91.value.substr(++pos,_91.value.length):_91.value;return new RegExp(_93.escapeRegExp(),"i");};var _94=function(_95,_96){var _97=0;for(var i=0;i<_95.length;i++){if(_96[_95[i]]){_97++;}}return _97;};var _99=function(_9a,_9b,_9c){var _9d=1;var c=_9a[_9b];for(var i=_9b+1;i<_9a.length;i++){if(_9a[i][1].count==c){if(_9a[i][0].match(_9c)){_9d++;}}else{break;}}return _9d;};var _a0=function(_a1,_a2){var _a3=abego.internal.getTagManager().getSortedTagInfos();var _a4=[];var _a5=0;for(var i=0;i<_a3.length;i++){var c=_a3[i][1].count;if(c!=_a5){if(_a2&&(_a4.length+_99(_a3,i,_a1)>_a2)){break;}_a5=c;}if(c==1){break;}var s=_a3[i][0];if(s.match(_a1)){_a4.push(s);}}return _a4;};var _a9=function(_aa,_ab){return abego.filterStrings(abego.internal.getTagManager().getAllTags(_ab),_aa);};var _ac=function(){if(!_71){return;}var _ad=store.getTiddlerText("IntelliTaggerMainTemplate");if(!_ad){_ad="<b>Tiddler IntelliTaggerMainTemplate not found</b>";}_71.innerHTML=_ad;applyHtmlMacros(_71,null);refreshElements(_71,null);};var _ae=function(e){if(!e){var e=window.event;}var tag=this.getAttribute("tag");if(_73){_73.call(this,tag,e);}return false;};var _b2=function(_b3){createTiddlyElement(_b3,"span",null,"tagSeparator"," | ");};var _b4=function(_b5,_b6,_b7,_b8,_b9){if(!_b6){return;}var _ba=_b8?abego.toSet(_b8):{};var n=_b6.length;var c=0;for(var i=0;i<n;i++){var tag=_b6[i];if(_ba[tag]){continue;}if(c>0){_b2(_b5);}if(_b9&&c>=_b9){abego.createEllipsis(_b5);break;}c++;var _bf="";var _c0=_b5;if(_b7<10){_c0=createTiddlyElement(_b5,"span",null,"numberedSuggestion");_b7++;var key=_b7<10?""+(_b7):"0";createTiddlyElement(_c0,"span",null,"suggestionNumber",key+") ");var _c2=_b7==1?"Return or ":"";_bf=" (Shortcut: %1Alt-%0)".format([key,_c2]);}var _c3=config.views.wikified.tag.tooltip.format([tag]);var _c4=(_78(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_bf]);var _c5="%0; Shift-Click: %1".format([_c4,_c3]);var btn=createTiddlyButton(_c0,tag,_c5,_ae,_78(tag)?"currentTag":null);btn.setAttribute("tag",tag);}};var _c7=function(){if(_71){window.scrollTo(0,ensureVisible(_71));}if(_77()){window.scrollTo(0,ensureVisible(_77()));}};var _c8=function(e){if(!e){var e=window.event;}if(!_71){return;}var _cb=resolveTarget(e);if(_cb==_77()){return;}if(abego.isDescendantOrSelf(_71,_cb)){return;}abego.IntelliTagger.close();};addEvent(document,"click",_c8);var _cc=Story.prototype.gatherSaveFields;Story.prototype.gatherSaveFields=function(e,_ce){_cc.apply(this,arguments);var _cf=_ce.tags;if(_cf){_ce.tags=_cf.trim();}};var _d0=function(_d1){story.focusTiddler(_d1,"tags");var _d2=abego.getTiddlerField(story,_d1,"tags");if(_d2){var len=_d2.value.length;abego.setRange(_d2,len,len);window.scrollTo(0,ensureVisible(_d2));}};var _d4=config.macros.edit.handler;config.macros.edit.handler=function(_d5,_d6,_d7,_d8,_d9,_da){_d4.apply(this,arguments);var _db=_d7[0];if((_da instanceof Tiddler)&&_db=="tags"){var _dc=_d5.lastChild;_dc.onfocus=function(e){abego.IntelliTagger.assistTagging(_dc,_da);setTimeout(function(){_d0(_da.title);},100);};_dc.onkeyup=function(e){if(!e){var e=window.event;}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){_8b(e.keyCode==48?9:e.keyCode-49,_dc,_da);}else{if(e.ctrlKey&&e.keyCode==32){_8b(0,_dc,_da);}}if(!e.ctrlKey&&(e.keyCode==13||e.keyCode==10)){_8b(0,_dc,_da);}setTimeout(function(){abego.IntelliTagger.assistTagging(_dc,_da);},100);return false;};_81(_dc);}};var _e0=function(e){if(!e){var e=window.event;}var _e3=resolveTarget(e);var _e4=_e3.getAttribute("tiddler");if(_e4){story.displayTiddler(_e3,_e4,"IntelliTaggerEditTagsTemplate",false);_d0(_e4);}return false;};var _e5=config.macros.tags.handler;config.macros.tags.handler=function(_e6,_e7,_e8,_e9,_ea,_eb){_e5.apply(this,arguments);abego.IntelliTagger.createEditTagsButton(_eb,createTiddlyElement(_e6.lastChild,"li"));};var _ec=function(){if(_71&&_72&&!abego.isDescendantOrSelf(document,_72)){abego.IntelliTagger.close();}};setInterval(_ec,100);abego.IntelliTagger.displayTagSuggestions=function(_ed,_ee,_ef,_f0,_f1){_74=_ed;_75=abego.toSet(_ee);_76=_ef;_72=_f0;_73=_f1;if(!_71){_71=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");_71.style.position="absolute";}_ac();abego.openAsPopup(_71);if(_77()){var w=_77().offsetWidth;if(_71.offsetWidth<w){_71.style.width=(w-2*(_6e+_6f))+"px";}abego.moveBelowAndClip(_71,_77());}else{abego.centerOnWindow(_71);}_c7();};abego.IntelliTagger.assistTagging=function(_f3,_f4){var _f5=_90(_f3);var s=_f3.value;if(_7d(_f3)){s=_7a(s);}var _f7=s.readBracketedList();var _f8=_f7.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_f7),_f5,_70):_a0(_f5,_70);abego.IntelliTagger.displayTagSuggestions(_a9(_f5,_f7),_f7,_f8,_f3,function(tag,e){if(e.shiftKey){onClickTag.call(this,e);}else{_85(tag,_f3,_f4);}});};abego.IntelliTagger.close=function(){abego.closePopup(_71);_71=null;return false;};abego.IntelliTagger.createEditTagsButton=function(_fb,_fc,_fd,_fe,_ff,id,_101){if(!_fd){_fd="[edit]";}if(!_fe){_fe="Edit the tags";}if(!_ff){_ff="editTags";}var _102=createTiddlyButton(_fc,_fd,_fe,_e0,_ff,id,_101);_102.setAttribute("tiddler",(_fb instanceof Tiddler)?_fb.title:String(_fb));return _102;};abego.IntelliTagger.getSuggestionTagsMaxCount=function(){return 100;};config.macros.intelliTagger={label:"intelliTagger",handler:function(_103,_104,_105,_106,_107,_108){var _109=_107.parseParams("list",null,true);var _10a=_109[0]["action"];for(var i=0;_10a&&i<_10a.length;i++){var _10c=_10a[i];var _10d=config.macros.intelliTagger.subhandlers[_10c];if(!_10d){abego.alertAndThrow("Unsupported action '%0'".format([_10c]));}_10d(_103,_104,_105,_106,_107,_108);}},subhandlers:{showTags:function(_10e,_10f,_110,_111,_112,_113){_b4(_10e,_74,_76?_76.length:0,_76,abego.IntelliTagger.getSuggestionTagsMaxCount());},showFavorites:function(_114,_115,_116,_117,_118,_119){_b4(_114,_76,0);},closeButton:function(_11a,_11b,_11c,_11d,_11e,_11f){var _120=createTiddlyButton(_11a,"close","Close the suggestions",abego.IntelliTagger.close);},version:function(_121){var t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);var e=createTiddlyElement(_121,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_124){var e=createTiddlyElement(_124,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2006-2007 <b><font color=\"red\">abego</font></b> Software<font>";}}};})();config.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\n"+"!~IntelliTagger Stylesheet\n"+"***/\n"+"/*{{{*/\n"+".intelliTaggerSuggestions {\n"+"\tposition: absolute;\n"+"\twidth: 600px;\n"+"\n"+"\tpadding: 2px;\n"+"\tlist-style: none;\n"+"\tmargin: 0;\n"+"\n"+"\tbackground: #eeeeee;\n"+"\tborder: 1px solid DarkGray;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .currentTag   {\n"+"\tfont-weight: bold;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .suggestionNumber {\n"+"\tcolor: #808080;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .numberedSuggestion{\n"+"\twhite-space: nowrap;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter {\n"+"\tmargin-top: 4px;\n"+"\tborder-top-width: thin;\n"+"\tborder-top-style: solid;\n"+"\tborder-top-color: #999999;\n"+"}\n"+".intelliTaggerSuggestions .favorites {\n"+"\tborder-bottom-width: thin;\n"+"\tborder-bottom-style: solid;\n"+"\tborder-bottom-color: #999999;\n"+"\tpadding-bottom: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .normalTags {\n"+"\tpadding-top: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\n"+"\tfont-size: 10px;\n"+"\n"+"\tpadding-left: 0.3em;\n"+"\tpadding-right: 0.3em;\n"+"}\n"+"\n"+"/*}}}*/\n";config.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class=\"favorites\" macro=\"intelliTagger action: showFavorites\"></div>\n"+"<div class=\"normalTags\" macro=\"intelliTagger action: showTags\"></div>\n"+"<!-- The Footer (with the Navigation) ============================================ -->\n"+"<table class=\"intelliTaggerFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n"+"  <tr>\n"+"\t<td align=\"left\">\n"+"\t\t<span macro=\"intelliTagger action: closeButton\"></span>\n"+"\t</td>\n"+"\t<td align=\"right\">\n"+"\t\t<span macro=\"intelliTagger action: version\"></span>, <span macro=\"intelliTagger action: copyright \"></span>\n"+"\t</td>\n"+"  </tr>\n"+"</tbody></table>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='title' macro='view title'></div>\n"+"<div class='tagged' macro='tags'></div>\n"+"<div class='viewer' macro='view text wikified'></div>\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";config.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/archive/IntelliTaggerPlugin/Plugin-IntelliTagger-src.1.0.2.js]]\n";(function(){var _126=restart;restart=function(){setStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"IntelliTaggerStyleSheet");_126.apply(this,arguments);};})();}
// %/
Type the text for 'JOSM'
To search for all nodes that have an is_in value set:
type:node is_in place
[[Tiddly Markup|http://tiddlywiki.org/wiki/TiddlyWiki_Markup]]
Version 6.13.7 is considered the best release as it draws maps in exactly the same was as GPSr.  Later versions use a cache, are slower and draw maps differently. (http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q3/002479.html)

Instructions on installing 6.13.7 are [[here|http://openmtbmap.org/tutorials/install-mapsource/]].
You can download old versions of MapSource from: http://gawisp.com/perry/mapsource/

!Draw order
Mapsource draws maps from bottom to top (because of this lines can disappear behind polygons), GPS first draws polygons top to bottom (respecting Draw order of course), then lines top to bottom, then POI top to bottom. 
! Mapquest zooms
* Generally, colour is reserved for motorways, trunk & primary roads; secondary & tertiary are white with slightly different widths but the difference in width may just be a result of the fact that secondary's generally have dual carriageways
*100 km: borders & motorways in thin, no border, trunk & primary roads thin grey no border
*50km: motorways w. border, trunk roads purple no border, primary roads orange no border, secondary roads thin grey

*20km: trunk & primary roads now have borders but are only 3 pixels wide; secondary thick grey no border
*10km: as for 20km
*5km: as for 20km 
*2km: secondary roads now white with grey border; residential, tertiary, unclassified are all 1-pixel grey; parks, golf courses, buildings (grey), stadia (light red) visible
* 1km: service roads now visible, tertiary/residential/unclassified roads now white with a border, secondary are wider but same style
*500m: as for 1km
* 200m: one-way symbols now visible as grey arrows inside ways
! Google Maps zooms:
* 100km: national borders, motorways in bold orange, trunk/primary in lighter orange, no borders
* 50km: borders on motorway and trunk/primary now visible
* 20km: primary/secondary appearing as light grey no border
* 10km: as for 20 km
* 5km: secondary now light yellow with a border; tertiary dark grey, resi/unclassified/service light grey

Code originally by ArphenLin. Small tweak by SimonBaird
To use this you must edit your ViewTemplate and add newHere to the toolbar div, eg
{{{<div class='toolbar' macro='toolbar ... newHere'></div>}}}

config.commands.newHere = {
	text: 'new here',
	tooltip: 'Create a new tiddler tagged as this tiddler',
	hideReadOnly: true,
	handler: function(e,src,title) {
		if (!readOnly) {
			var t=document.getElementById('tiddler'+title);
			story.setTiddlerTag(config.macros.newTiddler.title, title, 0);
			return false;

config.commands.newJournalHere = {
	//text: 'new journal here',  // too long
	text: 'new journal',
	hideReadOnly: true,
	dataFormat: 'YYYY-0MM-0DD 0hh:0mm', // adjust to your preference
	tooltip: 'Create a new journal tiddler tagged as this tiddler',
	handler: function(e,src,title) {
		if (!readOnly) {
			var now = new Date();
			var t=document.getElementById('tiddler'+title);
			var newtitle = now.formatString(this.dataFormat)
			story.setTiddlerTag(newtitle, title, 0);
			return false;

<div class='header' macro='gradient vert [[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>

<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>


| Name:|QuickOpenTagPlugin|
| Purpose:|Makes tag links into a Taggly style open tag plus a normal style drop down menu|
| Creator:|SimonBaird|
| Source:|http://simonbaird.com/mptw/#QuickOpenTagPlugin|
| Requires:|TW 2.x|
| Version|1.1.1 (19-May-06)|

* Version 1.1.1 (19/05/2006)
** Added a little more CSS so the tags look good in standard main menus and normal tiddlers
* Version 1.1 (07/02/2006)
** Fix Firefox crashes
** Updated by ~BidiX[at]~BidiX.info
* Version 1.0 (?/01/2006)
** First release


//⊻ ⊽ ⋁ ▼ 

window.createTagButton_orig_mptw = createTagButton;
window.createTagButton = function(place,tag,excludeTiddler) {
 var sp = createTiddlyElement(place,"span",null,"quickopentag");
 var theTag = createTiddlyButton(sp,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tag]),onClickTag);

config.macros.miniTag = {handler:function(place,macroName,params,wikifier,paramString,tiddler) {
 var tagged = store.getTaggedTiddlers(tiddler.title);
 if (tagged.length > 0) {
 var theTag = createTiddlyButton(place,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
 theTag.className = "miniTag";

config.macros.miniTag.dropdownchar = (document.all?"▼":"▾"); // the fat one is the only one that works in IE

config.macros.allTags.handler = function(place,macroName,params)
 var tags = store.getTags();
 var theDateList = createTiddlyElement(place,"ul",null,null,null);
 if(tags.length === 0)
 for (var t=0; t<tags.length; t++)
 var theListItem =createTiddlyElement(theDateList,"li",null,null,null);
 var theLink = createTiddlyLink(theListItem,tags[t][0],true);
 var theCount = " (" + tags[t][1] + ")";

 var theDropDownBtn = createTiddlyButton(theListItem," "+config.macros.miniTag.dropdownchar,this.tooltip.format([tags[t][0]]),onClickTag);

// probably could redo these styles a bit cleaner..
 ".tagglyTagged .quickopentag, .tagged .quickopentag \n"+
 "     { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }\n"+
 ".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }\n"+
 ".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}\n"+
// extra specificity to make it work?
 "#displayArea .viewer .quickopentag a.button, \n"+
 "#displayArea .viewer .quickopentag a.tiddyLink, \n"+
 "#mainMenu .quickopentag a.tiddyLink, \n"+
 "#mainMenu .quickopentag a.tiddyLink \n"+
         " { border:0px solid black; }\n"+
 "#displayArea .viewer .quickopentag a.button, \n"+
 "#mainMenu .quickopentag a.button \n"+
    "{ margin-left:0px; padding-left:2px; }\n"+
 "#displayArea .viewer .quickopentag a.tiddlyLink, \n"+
 "#mainMenu .quickopentag a.tiddlyLink \n"+
   " { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }\n"+
 "a.miniTag {font-size:150%;} \n"+
 "#mainMenu .quickopentag a.button \n"+
    "{ margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }\n"+ // looks better in right justified main menus


<html>&#x22bb; &#x22bd; &#x22c1; &#x25bc; &#x25be;</html>
| Name:|RenameTagsPlugin|
| Purpose:|Allows you to easily rename tags|
| Creator:|SimonBaird|
| Source:|http://simonbaird.com/mptw/#RenameTagsPlugin|
| Version:|1.0.1 (5-Mar-06)|

If you rename a tiddler/tag that is tagging other tiddlers this plugin will ask you if you want to rename the tag in each tiddler where it is used. This is essential if you use tags and ever want to rename them. To use it, open the tag you want to rename as a tiddler (it's the last option in the tag popup menu), edit it, rename it and click done. You will asked if you want to rename the tag. Click OK to rename the tag in the tiddlers that use it. Click Cancel to not rename the tag.

Try renaming [[Plugins]] or [[CSS]] on this site.

* 1.0.1 (5-Mar-06) - Added feature to allow renaming of tags without side-effect of creating a tiddler
* 1.0.0 (5-Mar-06) - First working version


version.extensions.RenameTagsPlugin = {
	major: 1, minor: 0, revision: 0,
	date: new Date(2006,3,5),
	source: "http://simonbaird.com/mptw/#RenameTagsPlugin"

config.macros.RenameTagsPlugin = {};
config.macros.RenameTagsPlugin.prompt = "Rename the tag '%0' to '%1' in %2 tidder%3?";

// these are very useful, perhaps they should be in the core
if (!store.addTag) {
	store.addTag = function(title,tag) {
		var t=this.getTiddler(title); if (!t || !t.tags) return;

if (!store.removeTag) {
	store.removeTag = function(title,tag) {
		var t=this.getTiddler(title); if (!t || !t.tags) return;
		if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);

store.saveTiddler_orig_tagrename = store.saveTiddler;
store.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {
	if (title != newTitle && this.getTaggedTiddlers(title).length > 0) {
		// then we are renaming a tag
		var tagged = this.getTaggedTiddlers(title);
		if (confirm(config.macros.RenameTagsPlugin.prompt.format([title,newTitle,tagged.length,tagged.length>1?"s":""]))) {
			for (var i=0;i<tagged.length;i++) {
				// if tiddler is visible refresh it to show updated tag
		if (!this.tiddlerExists(title) && newBody == "") {
			// dont create unwanted tiddler
			return null;
	return this.saveTiddler_orig_tagrename(title,newTitle,newBody,modifier,modified,tags);


<<search>><<closeAll>><<permaview>><<newTiddler>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
|Author|Eric Shulman|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
>see [[SinglePageModePluginInfo]]
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
2008.10.17 [2.9.6] changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 6, date: new Date(2008,10,17)};
config.paramifiers.SPM = { onstart: function(v) {
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
} };
if (config.options.chkSinglePageMode==undefined)
if (config.options.chkSinglePagePermalink==undefined)
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
if (config.options.chkTopOfPageMode==undefined)
if (config.options.chkBottomOfPageMode==undefined)
if (config.options.chkSinglePageAutoScroll==undefined)
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();

if (Story.prototype.SPM_coreDisplayTiddler==undefined)
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
	else if (top)
	else if (bottom)
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
		else if (bottom)
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=document.getElementById(story.idPrefix+title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until after animation completes
		var delay=opt.chkAnimate?config.animDuration+10:0;

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
|Author|Eric Shulman|
|Description|Documentation for SinglePageModePlugin|
Normally, as you click on the links in TiddlyWiki, more and more tiddlers are displayed on the page. The order of this tiddler display depends upon when and where you have clicked. Some people like this non-linear method of reading the document, while others have reported that when many tiddlers have been opened, it can get somewhat confusing.  SinglePageModePlugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one item displayed at a time.
When the plugin is enabled, only one tiddler will be displayed at a time and the browser window's titlebar is updated to include the current tiddler title.  The browser's location URL is also updated with a 'permalink' for the current tiddler so that it is easier to create a browser 'bookmark' for the current tiddler.  Alternatively, even when displaying multiple tiddlers //is// permitted, you can still reduce the potential for confusion by forcing  tiddlers to always open at the top (or bottom) of the page instead of being displayed following the tiddler containing the link that was clicked.
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

* {{block{
The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}. You can also use {{{SPM:expression}}}, where 'expression' is any javascript statement that evaluates to true or false.  This allows you to create hard-coded links in other documents that can selectively enable/disable the use of this option based on various programmatic conditions, such as the current username. For example, using
enables 'one tiddler at a time' display for all users //other than// "~SomeName")}}}
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
2008.06.12 2.9.5 corrected 'scroll to top of page' logic in auto-scroll handling
2008.06.11 2.9.4 added chkSinglePageKeepEditedTiddlers option
2008.06.05 2.9.3 in displayTiddler(), bypass single/top/bottom mode handling if startingUp.  Allows multiple tiddlers to be displayed during startup processing (e.g., #story:DefaultTiddlers), even if single/top/bottom mode is enabled.
2008.04.18 2.9.2 in displayTiddler() and checkLastURL(), handling for Unicode in tiddler titles (remove explicit conversion between Unicode and UTF, as this is apparently done automatically by encode/decodeURIComponent, resulting in double-encoding!
2008.04.08 2.9.1 don't automatically add options to AdvancedOptions shadow tiddler
2008.04.02 2.9.0 in displayTiddler(), when single-page mode is in use and a tiddler is being edited, ask for permission to save-and-close that tiddler, instead of just leaving it open.
2008.03.29 2.8.3 in displayTiddler(), get title from tiddler object (if needed).  Fixes errors caused when calling function passes a tiddler *object* instead of a tiddler *title*
2008.03.14 2.8.2 in displayTiddler(), if editing specified tiddler, just move it to top/bottom of story *without* re-rendering (prevents discard of partial edits).
2008.03.06 2.8.1 in paramifier handler, start 'checkURL' timer if chkSinglePageMode is enabled
2008.03.06 2.8.0 added option, {{{config.options.chkSinglePageKeepFoldedTiddlers}}}, so folded tiddlers won't be closed when using single-page mode.  Also, in checkURL(), if hash is a ''permaview'' (e.g., "#foo bar baz"), then display multiple tiddlers rather than attempting to display "foo bar baz" as a single tiddler
2008.03.05 2.7.0 added support for "SPM:" URL paramifier
2008.03.01 2.6.0 in hijack of displayTiddler(), added 'title' argument to closeAllTiddlers() so that target tiddler isn't closed-and-reopened if it was already displayed.  Also, added config.options.chkSinglePageAutoScrolloption to bypass automatic 'scroll into view' logic (note: core still does it's own ensureVisible() handling)
2007.12.22 2.5.3 in checkLastURL(), use decodeURIComponent() instead of decodeURI so that tiddler titles with commas (and/or other punctuation) are correctly handled.
2007.10.26 2.5.2 documentation cleanup
2007.10.08 2.5.1 in displayTiddler(), when using single-page or top-of-page mode, scrollTo(0,0) to ensure that page header is in view.
2007.09.13 2.5.0 for TPM/BPM modes, don't force tiddler to redisplay if already shown.  Allows transition between view/edit or collapsed/view templates, without repositioning displayed tiddler.
2007.09.12 2.4.0 added option to disable automatic permalink feature.  Also, Safari is now excluded from permalinking action to avoid bug where tiddlers don't display after hash is updated.
2007.03.03 2.3.1 fix typo when adding BPM option to AdvancedOptions (prevented checkbox from appearing)
2007.03.03 2.3.0 added support for BottomOfPageMode (BPM) based on request from DaveGarbutt
2007.02.06 2.2.3 in Story.prototype.displayTiddler(), use convertUnicodeToUTF8() for correct I18N string handling when creating URL hash string from tiddler title (based on bug report from BidiX)
2007.01.08 2.2.2 use apply() to invoke hijacked core functions
2006.07.04 2.2.1 in hijack for displayTiddlers(), suspend TPM as well as SPM so that DefaultTiddlers displays in the correct order.
2006.06.01 2.2.0 added chkTopOfPageMode (TPM) handling
2006.02.04 2.1.1 moved global variable declarations to config.* to avoid FireFox crash bug when assigning to globals
2005.12.27 2.1.0 hijack displayTiddlers() so that SPM can be suspended during startup while displaying the DefaultTiddlers (or #hash list).  Also, corrected initialization for undefined SPM flag to "false", so default behavior is to display multiple tiddlers
2005.12.27 2.0.0 Update for TW2.0
2005.11.24 1.1.2 When the back and forward buttons are used, the page now changes to match the URL.  Based on code added by Clint Checketts
2005.10.14 1.1.1 permalink creation now calls encodeTiddlyLink() to handle tiddler titles with spaces in them
2005.10.14 1.1.0 added automatic setting of window title and location bar ('auto-permalink').  feature suggestion by David Dickens.
2005.10.09 1.0.1 combined documentation and code in a single tiddler
2005.08.15 1.0.0 Initial Release
|<<siteMap mkgmap 2>><<siteMap mkgmap_options  2>>|<<siteMap mkgmapStyles>><<siteMap splitter_options>><<siteMap OSM>>|<<siteMap GPSr 2>><<siteMap MapSource>><<siteMap TYP_files>>|<<siteMap otherSoftware 2>>|<<siteMap general>>|

| Name:|SiteMapMacro|
| Author:|Simon Baird|
| Location:|http://simonbaird.com/mptw/#SiteMapMacro|
| Version:|1.0.3, 15-Mar-06|

See SiteMap and SliderSiteMap for example usage.

* Name of tiddler to start at
* Max depth (a number) 
* Format (eg, nested, see formats below)
* Don't show root flag (anything other than null turns it on)
* Tags - a string containing a bracketed list of tags that we are interested in

* 1.0.3 (15-Mar-06)
** added tag filtering
* 1.0.2 (15-Mar-06)
** Added json format and dontshowroot option
* 1.0.1 (9-Mar-06)
** Added selectable formats and fixed nested slider format
* 1.0.0 (8-Mar-06)
** first release


version.extensions.SiteMapMacro = {
	major: 1,
	minor: 0,
	revision: 3,
	date: new Date(2006,3,15),
	source: "http://simonbaird.com/mptw/#SiteMapMacro"

config.macros.siteMap = {

	formats: {
		bullets: {
			formatString: "%0[[%1]]\n%2",
			indentString: "*"

		// put this in your StyleSheet to make it look good.
		// .sliderPanel { margin-left: 2em; }

		sliders: {
			formatString: "[[%1]]+++\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"

		openSliders: {
			formatString: "[[%1]]++++\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"

		popups: {
			formatString: "[[%1]]+++^\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"

		// these don't work too well
		openPopups: {
			formatString: "[[%1]]++++^\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		// this is a little nuts but it works
		json: {
			formatString: '\n%0{"%1":[%2\n%0]}',
			formatStringLeaf: '\n%0"%1"',
			indentString: "  ",
			separatorString: ","


	defaultFormat: "bullets",

	treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {

		var tiddler = store.getTiddler(title);
		var tagging = store.getTaggedTiddlers(title);

		if (dontshowroot)
			depth = 0;

		var indent = "";
		if (this.formats[format].indentString)
			for (var j=0;j<depth;j++)
				indent += this.formats[format].indentString;

		var childOutput = "";
		if (!maxdepth || depth < parseInt(maxdepth)) 
			for (var i=0;i<tagging.length;i++)
				if (tagging[i].title != title) {
					if (this.formats[format].separatorString && i != 0)
						childOutput += this.formats[format].separatorString;
					childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);

		if (childOutput == "" && (
				(tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||
				(excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))
			) {
			// so prune it cos it doesn't have the right tags and neither do any of it's children
			return "";

		if (dontshowroot)
			return childOutput;

		if (this.formats[format].formatStringLeaf && childOutput == "") {
			// required for nestedSliders
			return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);

		return this.formats[format].formatString.format([indent,title,childOutput]);

	handler: function (place,macroName,params,wikifier,paramString,tiddler) {
			params[0] && params[0] != '.' ? params[0] : tiddler.title, 1, 
			params[1] && params[1] != '.' ? params[1] : null, // maxdepth
			params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format
			params[3] && params[3] != '.' ? params[3] : null, // dontshowroot
			params[4] && params[4] != '.' ? params[4] : null, // tags
			params[5] && params[5] != '.' ? params[5] : null // excludetags


a collection of notes
mkgmap wiki

''Download:'' from http://opheliat.free.fr/michel40/
''Usage:'' let's you edit binary TYP files, or compile text source files into binary TYP files
''Details:'' Still under development and improvement.  Now has an English translation and many changes to the way POIs, lines and polygons are edited.
TYP files handle the way the various elements in the map are displayed (both on the GPSr and on MapSource).  Each TYP file has a family id and you need to know that. The file controls how a map will be displayed on the GPSr and also on MapSource.  Note that MapSource and GPS units can and will display the same TYP differently.  
If you want to use a TYP file with mkgmap:
# It has to end in .TYP (not .typ). Note - this is an old requirement and may no longer be true
# It has to have the same [[-family-id]] as the map(s) it is being applied to
!Using in mkgmap
If you want to add the TYP file with mkgmap you just have to know the family id of the TYP file and ''make sure that it is named with an
upper case TYP extension''.  Then use the """--family-id=909""" argument to mkgmap, replacing 909 with the actual family id that the TYP file belongs to.  You can get the family ID by using the online editor, or change the family ID to whatever you want using the Perl script described here: http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2010q1/007067.html
!Appearance on GPS
TYP files work differently in MapSource compared to GPS units.  This is particularly true in the case of lines with borders.  If your TYP file has custom line definitions you can define these lines to be one colour, with a border of a different colour.  This works fine in MapSource, but will look horrible on some (but not all) GPS units.  
Units known not to display lines with borders properly:
*GPSMap 76Csx (and, presumably other GPSMap units)
*eTrex Legend HCx & Venture Cx
Units known to display lines with borders OK:

!!Effect on default names
The strings associated with each element of a TYP file define what the default name will appear as when you hover the cursor over it in the GPSr.
!!Useful links
* http://wiki.openstreetmap.org/wiki/Talk:Mkgmap#Buildings_and_TYP-Files
*[[Slovakia Topo 2|http://ati.land.cz/gps/typdecomp/editor.cgi?_h=958fd0ed4bdf0bb096599727c61fcaec809ad45f]]

!!!TYP files
*[[Colour picker|http://www.colorpicker.com/]]
*You can download pre-existing TYP files from here: [[http://www.dandra.ic.cz/gps/typ.html|http://www.dandra.ic.cz/gps/typ.html]]
**To figure out what their family IDs are, load them into the TYP editor at [[http://ati.land.cz/gps/typdecomp/editor.cgi|http://ati.land.cz/gps/typdecomp/editor.cgi]]
* GenTYP: http://cypherman1.googlepages.com/genTYP
** GenTYP how-to: http://cypherman1.googlepages.com/gentyp_inst_en
* UK cartographic symbols: http://www.streetmap.co.uk/mapkey.htm
* http://wikitravel.org/en/Wikitravel:Common_map_symbols
|Created by|SimonBaird|
|Version|1.1.2 25-Apr-06|
|Requires|See TagglyTagging|

* 1.1.2 (25-Apr-2006) embedded TagglyTaggingStyles. No longer need separated tiddler for styles.
* 1.1.1 (6-Mar-2006) fixed bug with refreshAllVisible closing tiddlers being edited. Thanks Luke Blanshard.


!Setup and config

version.extensions.TagglyListPlugin = {
	major: 1, minor: 1, revision: 2,
	date: new Date(2006,4,25),
	source: "http://simonbaird.com/mptw/#TagglyListPlugin"

config.macros.tagglyList = {};
config.macros.tagglyListByTag = {};
config.macros.tagglyListControl = {};
config.macros.tagglyListWithSort = {};
config.macros.hideSomeTags = {};

// change this to your preference
config.macros.tagglyListWithSort.maxCols = 6;

config.macros.tagglyList.label = "Tagged as %0:";

// the default sort options. set these to your preference
config.macros.tagglyListWithSort.defaults = {
 sortBy:"title", // title|created|modified
 sortOrder: "asc", // asc|desc
 hideState: "show", // show|hide
 groupState: "nogroup", // nogroup|group
 numCols: 1

// these tags will be ignored by the grouped view
config.macros.tagglyListByTag.excludeTheseTags = [

config.macros.tagglyListControl.tags = {
 modified: "sortByModified", 
 created: "sortByCreated",

// note: should match config.macros.tagglyListControl.tags
config.macros.hideSomeTags.tagsToHide = [


// from Eric
function isTagged(title,tag) {
 var t=store.getTiddler(title); if (!t) return false;
 return (t.tags.find(tag)!=null);

// from Eric
function toggleTag(title,tag) {
 var t=store.getTiddler(title); if (!t || !t.tags) return;
 if (t.tags.find(tag)==null) t.tags.push(tag);
 else t.tags.splice(t.tags.find(tag),1);

function addTag(title,tag) {
 var t=store.getTiddler(title); if (!t || !t.tags) return;

function removeTag(title,tag) {
 var t=store.getTiddler(title); if (!t || !t.tags) return;
 if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);

// from Udo
Array.prototype.indexOf = function(item) {
 for (var i = 0; i < this.length; i++) {
 if (this[i] == item) {
 return i;
 return -1;
Array.prototype.contains = function(item) {
 return (this.indexOf(item) >= 0);

displays a list of tagged tiddlers. 
parameters are sortField and sortOrder

// not used at the moment...
function sortedListOfOtherTags(tiddler,thisTag) {
 var list = tiddler.tags.concat(); // so we are working on a clone..
 for (var i=0;i<config.macros.hideSomeTags.tagsToHide.length;i++) {
 if (list.find(config.macros.hideSomeTags.tagsToHide[i]) != null)
 list.splice(list.find(config.macros.hideSomeTags.tagsToHide[i]),1); // remove hidden ones
 for (var i=0;i<config.macros.tagglyListByTag.excludeTheseTags.length;i++) {
 if (list.find(config.macros.tagglyListByTag.excludeTheseTags[i]) != null)
 list.splice(list.find(config.macros.tagglyListByTag.excludeTheseTags[i]),1); // remove excluded ones
 list.splice(list.find(thisTag),1); // remove thisTag
 return '[[' + list.sort().join("]] [[") + ']]';

function sortHelper(a,b) {
 if (a == b) return 0;
 else if (a < b) return -1;
 else return +1;

config.macros.tagglyListByTag.handler = function (place,macroName,params,wikifier,paramString,tiddler) {

 var sortBy = params[0] ? params[0] : "title"; 
 var sortOrder = params[1] ? params[1] : "asc";

 var result = store.getTaggedTiddlers(tiddler.title,sortBy);

 if (sortOrder == "desc")
 result = result.reverse();

 var leftOvers = []
 for (var i=0;i<result.length;i++) {

 var allTagsHolder = {};
 for (var i=0;i<result.length;i++) {
 for (var j=0;j<result[i].tags.length;j++) {

 if ( 
 result[i].tags[j] != tiddler.title // not this tiddler
 && config.macros.hideSomeTags.tagsToHide.find(result[i].tags[j]) == null // not a hidden one
 && config.macros.tagglyListByTag.excludeTheseTags.find(result[i].tags[j]) == null // not excluded
 ) {
 if (!allTagsHolder[result[i].tags[j]])
 allTagsHolder[result[i].tags[j]] = "";
 allTagsHolder[result[i].tags[j]] += "**[["+result[i].title+"]]\n";

 if (leftOvers.find(result[i].title) != null)
 leftOvers.splice(leftOvers.find(result[i].title),1); // remove from leftovers. at the end it will contain the leftovers...

 var allTags = [];
 for (var t in allTagsHolder)

 allTags.sort(function(a,b) {
 var tidA = store.getTiddler(a);
 var tidB = store.getTiddler(b);
 if (sortBy == "title") return sortHelper(a,b);
 else if (!tidA && !tidB) return 0;
 else if (!tidA) return -1;
 else if (!tidB) return +1;
 else return sortHelper(tidA[sortBy],tidB[sortBy]);

 var markup = "";

 if (sortOrder == "desc") {
 else {
 // leftovers first...
 for (var i=0;i<leftOvers.length;i++)
 markup += "*[["+leftOvers[i]+"]]\n";

 for (var i=0;i<allTags.length;i++)
 markup += "*[["+allTags[i]+"]]\n" + allTagsHolder[allTags[i]];

 if (sortOrder == "desc") {
 // leftovers last...
 for (var i=0;i<leftOvers.length;i++)
 markup += "*[["+leftOvers[i]+"]]\n";


config.macros.tagglyList.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
 var sortBy = params[0] ? params[0] : "title"; 
 var sortOrder = params[1] ? params[1] : "asc";
 var numCols = params[2] ? params[2] : 1;

 var result = store.getTaggedTiddlers(tiddler.title,sortBy);
 if (sortOrder == "desc")
 result = result.reverse();

 var listSize = result.length;
 var colSize = listSize/numCols;
 var remainder = listSize % numCols;

 var upperColsize;
 var lowerColsize;
 if (colSize != Math.floor(colSize)) {
 // it's not an exact fit so..
 lowerColsize = Math.floor(colSize);
 upperColsize = Math.floor(colSize) + 1;
 else {
 lowerColsize = colSize;
 upperColsize = colSize;

 var markup = "";
 var c=0;

 var newTaggedTable = createTiddlyElement(place,"table");
 var newTaggedBody = createTiddlyElement(newTaggedTable,"tbody");
 var newTaggedTr = createTiddlyElement(newTaggedBody,"tr");

 for (var j=0;j<numCols;j++) {
 var foo = "";
 var thisSize;

 if (j<remainder)
 thisSize = upperColsize;
 thisSize = lowerColsize;

 for (var i=0;i<thisSize;i++) 
 foo += ( "*[[" + result[c++].title + "]]\n"); // was using splitList.shift() but didn't work in IE;

 var newTd = createTiddlyElement(newTaggedTr,"td",null,"tagglyTagging");



/* snip for later.....
 //var groupBy = params[3] ? params[3] : "t.title.substr(0,1)";
 //var groupBy = params[3] ? params[3] : "sortedListOfOtherTags(t,tiddler.title)";
 //var groupBy = params[3] ? params[3] : "t.modified";
 var groupBy = null; // for now. groupBy here is working but disabled for now.

 var prevGroup = "";
 var thisGroup = "";

 if (groupBy) {
 result.sort(function(a,b) {
 var t = a; var aSortVal = eval(groupBy); var aSortVal2 = eval("t".sortBy);
 var t = b; var bSortVal = eval(groupBy); var bSortVal2 = eval("t".sortBy);
 var t = b; var bSortVal2 = eval(groupBy);
 return (aSortVal == bSortVal ?
 (aSortVal2 == bSortVal2 ? 0 : (aSortVal2 < bSortVal2 ? -1 : +1)) // yuck
 : (aSortVal < bSortVal ? -1 : +1));

 if (groupBy) {
 thisGroup = eval(groupBy);
 if (thisGroup != prevGroup)
 markup += "*[["+thisGroup+']]\n';
 markup += "**[["+t.title+']]\n';
 prevGroup = thisGroup;




Use to make the sort control buttons

function getSortBy(title) {
 var tiddler = store.getTiddler(title);
 var defaultVal = config.macros.tagglyListWithSort.defaults.sortBy;
 if (!tiddler) return defaultVal;
 var usetags = config.macros.tagglyListControl.tags;
 if (tiddler.tags.contains(usetags["title"])) return "title";
 else if (tiddler.tags.contains(usetags["modified"])) return "modified";
 else if (tiddler.tags.contains(usetags["created"])) return "created";
 else return defaultVal;

function getSortOrder(title) {
 var tiddler = store.getTiddler(title);
 var defaultVal = config.macros.tagglyListWithSort.defaults.sortOrder;
 if (!tiddler) return defaultVal;
 var usetags = config.macros.tagglyListControl.tags;
 if (tiddler.tags.contains(usetags["asc"])) return "asc";
 else if (tiddler.tags.contains(usetags["desc"])) return "desc";
 else return defaultVal;

function getHideState(title) {
 var tiddler = store.getTiddler(title);
 var defaultVal = config.macros.tagglyListWithSort.defaults.hideState;
 if (!tiddler) return defaultVal;
 var usetags = config.macros.tagglyListControl.tags;
 if (tiddler.tags.contains(usetags["hide"])) return "hide";
 else if (tiddler.tags.contains(usetags["show"])) return "show";
 else return defaultVal;

function getGroupState(title) {
 var tiddler = store.getTiddler(title);
 var defaultVal = config.macros.tagglyListWithSort.defaults.groupState;
 if (!tiddler) return defaultVal;
 var usetags = config.macros.tagglyListControl.tags;
 if (tiddler.tags.contains(usetags["group"])) return "group";
 else if (tiddler.tags.contains(usetags["nogroup"])) return "nogroup";
 else return defaultVal;

function getNumCols(title) {
 var tiddler = store.getTiddler(title);
 var defaultVal = config.macros.tagglyListWithSort.defaults.numCols; // an int
 if (!tiddler) return defaultVal;
 var usetags = config.macros.tagglyListControl.tags;
 for (var i=1;i<=config.macros.tagglyListWithSort.maxCols;i++)
 if (tiddler.tags.contains(usetags["cols"+i])) return i;
 return defaultVal;

function getSortLabel(title,which) {
 // TODO. the strings here should be definable in config
 var by = getSortBy(title);
 var order = getSortOrder(title);
 var hide = getHideState(title);
 var group = getGroupState(title);
 if (which == "hide") return (hide == "show" ? "−" : "+"); // 0x25b8;
 else if (which == "group") return (group == "group" ? "normal" : "grouped");
 else if (which == "cols") return "cols±"; // &plusmn;
 else if (by == which) return which + (order == "asc" ? "↓" : "↑"); // &uarr; &darr;
 else return which;

function handleSortClick(title,which) {
 var currentSortBy = getSortBy(title);
 var currentSortOrder = getSortOrder(title);
 var currentHideState = getHideState(title);
 var currentGroupState = getGroupState(title);
 var currentNumCols = getNumCols(title);

 var tags = config.macros.tagglyListControl.tags;

 // if it doesn't exist, lets create it..
 if (!store.getTiddler(title))
 store.saveTiddler(title,title,"",config.options.txtUserName,new Date(),null);

 if (which == "hide") {
 // toggle hide state
 var newHideState = (currentHideState == "hide" ? "show" : "hide");
 if (newHideState != config.macros.tagglyListWithSort.defaults.hideState)
 else if (which == "group") {
 // toggle hide state
 var newGroupState = (currentGroupState == "group" ? "nogroup" : "group");
 if (newGroupState != config.macros.tagglyListWithSort.defaults.groupState)
 else if (which == "cols") {
 // toggle num cols
 var newNumCols = currentNumCols + 1; // confusing. currentNumCols is an int
 if (newNumCols > config.macros.tagglyListWithSort.maxCols || newNumCols > store.getTaggedTiddlers(title).length)
 newNumCols = 1;
 if (("cols"+newNumCols) != config.macros.tagglyListWithSort.defaults.groupState)
 else if (currentSortBy == which) {
 // toggle sort order
 var newSortOrder = (currentSortOrder == "asc" ? "desc" : "asc");
 if (newSortOrder != config.macros.tagglyListWithSort.defaults.sortOrder)
 else {
 // change sortBy only

 if (which != config.macros.tagglyListWithSort.defaults.sortBy)

 store.setDirty(true); // save is required now.
 story.refreshTiddler(title,false,true); // force=true

config.macros.tagglyListControl.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
 var onclick = function(e) {
 if (!e) var e = window.event;
 e.cancelBubble = true;
 if (e.stopPropagation) e.stopPropagation();
 return false;
 createTiddlyButton(place,getSortLabel(tiddler.title,params[0]),"Click to change sort options",onclick,params[0]=="hide"?"hidebutton":"button");

put it all together..
config.macros.tagglyListWithSort.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
 if (tiddler && store.getTaggedTiddlers(tiddler.title).length > 0)
  // todo make this readable
 "<<tagglyListControl hide>>"+
 (getHideState(tiddler.title) != "hide" ? 
 '<html><span class="tagglyLabel">'+config.macros.tagglyList.label.format([tiddler.title])+' </span></html>'+
 "<<tagglyListControl title>><<tagglyListControl modified>><<tagglyListControl created>><<tagglyListControl group>>"+(getGroupState(tiddler.title)=="group"?"":"<<tagglyListControl cols>>")+"\n" + 
 "<<tagglyList" + (getGroupState(tiddler.title)=="group"?"ByTag ":" ") + getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+" "+getNumCols(tiddler.title)+">>" // hacky
 // + \n----\n" +
 //"<<tagglyList "+getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+">>"
 : ""),

config.macros.tagglyTagging = { handler: config.macros.tagglyListWithSort.handler };


So we don't see the sort tags.
(note, they are still there when you edit. Will that be too annoying?

// based on tags.handler
config.macros.hideSomeTags.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
 var theList = createTiddlyElement(place,"ul");
 if(params[0] && store.tiddlerExists[params[0]])
 tiddler = store.getTiddler(params[0]);
 var lingo = config.views.wikified.tag;
 var prompt = tiddler.tags.length == 0 ? lingo.labelNoTags : lingo.labelTags;
 for(var t=0; t<tiddler.tags.length; t++)
 if (!this.tagsToHide.contains(tiddler.tags[t])) // this is the only difference from tags.handler...



!Refresh everything when we save a tiddler. So the tagged lists never get stale. Is this too slow???

function refreshAllVisible() {
 story.forEachTiddler(function(title,element) {
   if (element.getAttribute("dirty") != "true") 

story.saveTiddler_orig_mptw = story.saveTiddler;
story.saveTiddler = function(title,minorUpdate) {
 var result = this.saveTiddler_orig_mptw(title,minorUpdate);
 return result;

store.removeTiddler_orig_mptw = store.removeTiddler;
store.removeTiddler = function(title) {

config.shadowTiddlers.TagglyTaggingStyles = "/***\nTo use, add {{{[[TagglyTaggingStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also ViewTemplate, EditTemplate and TagglyTagging.\n***/\n/*{{{*/\n.tagglyTagged li.listTitle { display:none;}\n.tagglyTagged li { display: inline; font-size:90%; }\n.tagglyTagged ul { margin:0px; padding:0px; }\n.tagglyTagging { padding-top:0.5em; }\n.tagglyTagging li.listTitle { display:none;}\n.tagglyTagging ul { margin-top:0px; padding-top:0.5em; padding-left:2em; margin-bottom:0px; padding-bottom:0px; }\n\n/* .tagglyTagging .tghide { display:inline; } */\n\n.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\n.tagglyTagging table { margin:0px; padding:0px; }\n\n\n.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\n.tagglyTagging .button, .tagglyTagging .hidebutton { color:#aaa; font-size:90%; border:0px; padding-left:0.3em;padding-right:0.3em;}\n.tagglyTagging .button:hover, .hidebutton:hover { background:#eee; color:#888; }\n.selected .tagglyTagging .button { display:inline; }\n\n.tagglyTagging .hidebutton { color:white; } /* has to be there so it takes up space. tweak if you're not using a white tiddler bg */\n.selected .tagglyTagging .hidebutton { color:#aaa }\n\n.tagglyLabel { color:#aaa; font-size:90%; }\n\n.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\n.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\n.tagglyTagging ul ul li {margin-left:0.5em; }\n\n.editLabel { font-size:90%; padding-top:0.5em; }\n/*}}}*/\n";



// // <html>&#x25b8;&#x25be;&minus;&plusmn;</html>
Type the text for 'TagglyTagging'
*[[Garmin maps forum @ openstreetmap|http://forum.openstreetmap.org/viewforum.php?id=26]]
*Google search of mkgmap-dev mailing list: use
{{{[search_term] site:http://www.mkgmap.org.uk/pipermail/mkgmap-dev/}}}
*[[OSM Consistency checker|http://keepright.ipax.at/]]
*[[OSM vs Google compare|http://sautter.com/map/]]
*Lots of useful tools for error-checking OSM data are at: http://tagwatch.stoecker.eu/
*[[Garmin POI types on OpenStreetMap|http://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin/POI_Types]]
| Name:|~TagglyTaggingViewTemplate |
| Version:|1.2 (16-Jan-2006)|
| Source:|http://simonbaird.com/mptw/#TagglyTaggingViewTemplate|
| Purpose:|See TagglyTagging for more info|
| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|
* 16-Jan-06, version 1.2, added tagglyListWithSort
* 12-Jan-06, version 1.1, first version
Remove the miniTag if you don't like it or you don't use QuickOpenTagPlugin
<div class="toolbar" macro="toolbar -closeTiddler closeOthers +editTiddler permalink references jump newHere"></div>
<div class="tagglyTagged" macro="hideSomeTags"></div>
<div><span class="title" macro="view title"></span><span class="miniTag" macro="miniTag"></span></div>
<div class='subtitle'>Updated <span macro='view modified date [[DD-MMM-YY]]'></span></div>
<div class="viewer" macro="view text wikified"></div>
<div class="tagglyTagging" macro="tagglyTagging"></div>
This is a tiddly-wiki.  Links open as tiddlers on a single page.  Click the close link in the top right of any tiddler to close it.  
I update this document fairly regularly. To see what's new, click the //Timeline// tag in the right-hand sidebar and you'll see the most recent changes.

To reset the wiki, just hit F5 to reload.

Note that I have not included some of the obsolete mkgmap options such as """--net""" and """--block-size""".

You can use mkgmap style files to perform actions.  All actions will be run before the final matching rule is selected and the action rules are not run in any particular order.  So anything that relies on the order of the action rules will not work reliably.

There are four actions that can be performed:

Sets the final name of the element.  It will overwrite any {{{name=x}}} tag that exists in the OSM element.  If you do want to use an existing tag, use {{{${tagname} }}}
Bounding boxes specify the bottom left and top right of an area on OSM.  

!Useful bounding boxes
The whole of the UK: {{{-9.31641, 49.496, 2.28516, 61.27023}}} or {{{49.496 -9.32 61.27 2.29}}}
England & Wales: {{{-6.18530, 49.84507, 1.87866, 55.63420}}} or {{{49.85 -6.19 55.63 1.88}}}
London: {{{-0.56305, 51.23613, 0.33508, 51.72703}}} or {{{51.24 -0.56 51.73 0.34}}}
Cape Town: {{{18.17825, -34.41937, 18.96103, -33.76431}}} or {{{-34.41937 18.17825 -33.76431 18.96103}}}
New York: {{{-74.22913, 40.49292, -71.75720, 41.38093}}}
Abu Dhabi: {{{54.24225, 24.20063, 54.80118, 24.65076}}}
UAE: {{{53.92639, 23.99378, 56.57959, 26.43861}}}
!Useful links:
*[[Bounding box calculator|http://touren.mospace.de/kachel.html]]
You can use mkgmap to create a transparent contour layer for a given region of interest.  

You do this using [[Srtm20sm|http://wiki.openstreetmap.org/index.php/Srtm2Osm]]

(See http://www.mail-archive.com/mkgmap-dev@lists.mkgmap.org.uk/msg01509.html for original source - I have edited here for simplicity)
!!Create OSM file with contours using [[srtm2OSM]]:
1. Download and install [[Srtm20sm|http://wiki.openstreetmap.org/index.php/Srtm2Osm]]
Then run it with the following call:
{{{Srtm2Osm.exe -large -cat 100 20 -step 10 -bounds1 10 20 30 40 -corrxy 0.0005 0.0005 -o srtm.osm}}}
*NB You will need to edit the bounds. They are specified in the following order in decimal degrees: Bottom, Left, Top, Right
*You might also want to try using the -corrxy 0.0005 0.0006 correction factor, as described [[here|http://openmtbmap.org/tutorials/create-elevation-contourline-maps/]]

2. Split the resulting OSM file with mkgmap splitter:

{{{java -Xmx2048M -jar splitter.jar --mixed=yes --mapid=21000001 --mixed=yes --max-nodes=5000000 srtm.osm}}}

At this point, you can make one or more IMG files, containing different types of contour.
For instance, you could make two files, one with a contour every 20 m (20 m, 40 m, 60 m, ...) and one with a contour every odd 10 m (10 m, 30 m, 50 m,...).  

3. Let's create a map which shows 20m contours, 100m contours and 400m contours.  To do this you will need to create one or more custom mkgmap styles which just contains a "lines" file with contour entries  Then the appropriate style rules (in a style folder called contours_style) are:
{{{contour=elevation & contour_ext=elevation_minor {name name '${ele|conv:m=>ft}'; } [0x20 resolution 22]}}}
{{{contour=elevation & contour_ext=elevation_medium  { name '${ele|conv:m=>ft}'; } [0x21 resolution 22]}}}
{{{contour=elevation & contour_ext=elevation_major     { name '${ele|conv:m=>ft}'; } [0x22 resolution 20]}}}

4. Then run mkgmap on the split OSM files to create your 10m contour layer:

{{{java -Xmx2048M -jar mkgmap.jar --style-file=contours_style \}}}
{{{  --net --gmapsupp --tdbfile --family-id=1234 --product-id=1 \}}}
{{{  --draw-priority=28 --transparent \}}}
{{{  --series-name=contours --family-name=contours --area-name=Foo \}}}
{{{  -c template_contours.args}}}

Rename the gmapsupp.img file to, say, mycontours.img

5. Now combine this with your standard map using mkgmap again:
{{{java -jar mkgmap.jar --gmapsupp mycontours.img myMainMap.img}}}

!GPS behaviour
|!Detail level|!Zoom|!What's visible?|h
|~|0.3mi-800ft|elevation major & elevation_medium|
|~|500ft-|elevation_major & elevation_medium & elevation_minor|

!Useful links
* [[Another walkthrough|http://wiki.openstreetmap.org/wiki/Topographic_maps_for_garmin_devices]]
* http://www.paulmac.force9.co.uk/geo/index.html
* http://www.smc.org.uk/ContourMaps.php
* http://sites.google.com/site/talkytoasteruk/ukmaps
* http://www.osm4you.com/ (free UK contour maps as IMG files)
*[[How-to create custom icons for waypoints|http://www.atlanticgeocaching.com/index.php?Itemid=177&catid=31:tutorial-software&id=62:gsak-a-garmin-custom-icons&option=com_content&view=article]]
*[[Another how-to|http://freegeographytools.com/2008/creating-custom-icons-for-garmin-points-of-interest-poi]]
''Revision'': 1140 (http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q3/003526.html)
''Use'': allows the use of extended types for POIS, areas and polygons.  These are the 3-byte types listed here: http://www.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20090819/2970a835/attachment.txt
''Effect'': extends the amount of types you can use in a map
*Marine types seem to be displayed OK without using a TYP file, but others may require a TYP file to be visible
*Line types 0x10??? apparently work fine
''Download:'' from [[here|http://code.google.com/p/gpicsync/]]
''Usage:'' use to geotag photos in combination with a GPX track.  
''Details'': gPicSync reads EXIF data from each photo in turn and determines what time it was taken.  It then parses through the GPX track and finds the coordinates of the trackpoint recorded closest to the time that the photo was taken.  It then updates the EXIF data of the photo to include GPS coordinates.  gPicSync can also write out a KML file containing the track and the photos embedded, which you can then view in Google Earth.
Though there are a lot of Garmin line types, its best to stick to those up to and including 0x2b.  Anything above this doesn't reliable appear in Mapsource and can have unpredictable effects on your GPS.  The GPS can display anything up to 0x3f.  If you need lots of line types and 0x2b isn't enough, use extended line types instead.
!!Routable line types
0x01-0x13, 0x16, 0x1a, 0x1b
These line types can be used by GPS or MapSource to generate routes.  No other line types can be used for routing purposes.

There are lots and lots of POI types, but many are repeats of each other.
According to Felix:
//"Don't use subtypes above 1f - (e.g. 2a or 20) they will break the search indexes on some units, and might even cause some GPS to not start up
anymore. Also 20 will display exactly alike 10 (either like the inbuilt style - or like the icon you have defined for 10) at least on etrex.

If you run out of POI, simply use extended types (of course they are not searchable though). Else you run risk of bricking your GPS (if you put
maps on internal memory, if on sd-card you can put whatever you want of course, but then don't be surprised if POI search or similar things don't work as expected anymore).//

The default seems to include polygon definitions up to 0x53

!Useful link
*See http://www.mail-archive.com/mkgmap-dev@lists.mkgmap.org.uk/msg01125.html for a long list of Garmin type codes
''Download:'' from http://sites.google.com/site/cypherman1/gentyp
''Usage:'' create text TYP source files and compile them to TYP binaries
''Details:'' see manual [[here|http://sites.google.com/site/cypherman1/gentyp_inst_en]]
''Download:'' from http://www.filefactory.com/file/ah4ch2f/n/GenTYPg.zip
''Usage:'' lets you create your own TYP files
''Details:'' see http://www.gwprojects.org/forum/viewtopic.php?f=9&t=1126

Note: this has a similar name to genTYP, but is largely a different piece of software
''Download:'' from http://www.anpo.republika.pl/download.html
''Usage:'' lets you join map tiles (in IMG format) to create a single gmappsupp.img (like mkgmap).  Let's you set the transparency of tiles individually.
''Details:'' see manual 
!!output logging
When running mkgmap, use
{{{java -jar -Dlog.config=logging.properties mkgmap.jar mydata.osm}}}

{{{-Dlog.config=logging.properties}}} sets full verbose error output

You can add even more debugging information using {{{ -agentlib:hprof=cpu=samples,depth=20,interval=1}}} when you suspect that mkgmap is hung in a loop.  This will output a {{{java.hprof.txt}}} file.
!!heap size
Use {{{-Xmx[xxx]m}}} to set the maximum heap size that the Java Virtual Machine (VM) can use.  You can use any number for [xxx] but you cannot go above the total amount of RAM you have installed and you will find that Java fails if you request a size that is larger than the maximum available contiguous memory space (the Java VM cannot allocate heap across non-contiguous memory).
e.g. {{{java -Xmx1500m -jar mkgmap.jar mydata.osm}}}
Use {{{-ea}}} to enable assertions, which provides much more verbose output from mkgmap as it runs
e.g. {{{java -ea -jar mkgmap.jar mydata.osm}}}
Standalone OSM data renderer:
* http://wiki.openstreetmap.org/wiki/Kosmos
Defines how OSM tags are translated into lines in IMG files
!Element types
Sets the resolution that an object appears at
If you give this, then if the element does not already have a name, then it will be given this name. This might be useful for things that usually don't have names and don't have a recognisable separate Garmin symbol. You could give a default name of 'bus stop' for example and all bus stops that didn't have their own name would now be labeled as such. 
|4|Major highway or ramp|
|3|Principal highway|
|2|Arterial street or other highway|
|0|Residential street/unpaved road/trail|
Used for routing; an indication of how fast traffic on the road is. 0 is the slowest and 7 the fastest. The speed limits that Garmin knows are shown in the following table: 
|!road_speed|!maximum speed|h
|7|No speed limit|
|6|70 mph / 110 kmh|
|5|60 mph / 90 kmh|
|4|50 mph / 80 kmh|
|3|35 mph / 60 kmh|
|2|25 mph / 40 kmh|
|1|15 mph / 20 kmh|
|0|3 mph / 5 kmh|
!Action blocks
Is enclosed in curly brackets {...} and contains statements that let you alter the tags associated with an object.
This sets the final name of the element, that is, the name that will be used on the map irrespective of the actual name tag in OSM.  List of alternatives can be given, separated by a | symbol - the first alternative that matches is used.
{{{{name '${name} (${ref})' | '${ref}' | '${name}';} }}}
The resultant action would be that if name='Main St' and ref=A1 the name would be set to "Main St (A1)", but if there was no 'name' tag then the result would be just "A1". If the name tag was set and not the ref tag, then the element-name would just be the value of the name tag.
''Download:'' from http://www.maptk.dnsalias.com/
''Usage:'' generate TYP files using a graphical editor; decompile binary TYP files to text source
''Details:'' http://www.maptk.dnsalias.com/maptk/notice.html#english
Type the text for 'mkgmap_style_files'
This is a simple text filed called 'options' and saved within a given style folder.  It is only invoked when the style itself is invoked using the [[-style-file]] command line option for mkgmap.  You can use it to specify the mapping between levels and resolution (see [[zoomLevels]])
Used where you want a single way to be converted to two ways in the output map (for example a road might be rendered as normal but an additional line is created if the road is oneway - this would allow a type file to add oneway arrows to the road). An example of use might be: 
In the lines file:
{{{highway=trunk & oneway=yes [0x123 road_class=3 road_speed=5 resolution 16]}}}
In the overlays file:
{{{0x123:   0x02, 0x23}}}
Then set the typ file to contain arrows for code 0x23.  Note that only the first way in the overlays file is routeable. 
''Note'' In MapSource versions more recent than 6.13.7 overlays and custom TYP files only seem to work if you are overlaying on top of a single line.  MapSource won't show overlays on top of bitmaps, though they display fine on the GPS.  It may be worth downgrading to an earlier version if this is a problem for you.
''Note'' It appears from the java source (http://www.mkgmap.org.uk/svn/wsvn/mkgmap/src/uk/me/parabola/mkgmap/osmstyle/OverlayReader.java) that you can overlay more than two lines on top of each other
''Note'': the first type listed after the colon is marked as way (routable); the rest are just lines.  Therefore the order of the types after the colon is important.  See addLine in http://www.mkgmap.org.uk/svn/wsvn/mkgmap/src/uk/me/parabola/mkgmap/osmstyle/OverlayReader.java
* use highway=track when the way could conceivably also be described as an unpaved road (i.e. has two parallel tyre-ways caused by passage of vehicles)
* use highway=footway when it's a path specifically designated for pedestrians
* use highway=path when it's a multi-use path.
Controls which points are added to the map, and what icons are used to display them.

!!custom icons
You can select that a point displays one of the Garmin custom icons by using type codes.  I'm not sure whether these correspond to the 12 custom icons that you can upload into the device (once you've edited them, see below).  It may be that those custom icons can only be assigned manually when you create a waypoint.

See http://www.mail-archive.com/mkgmap-dev@lists.mkgmap.org.uk/msg01125.html for a huge list of all features and their codes
See http://freegeographytools.com/2008/creating-custom-icons-for-garmin-points-of-interest-poi for how to create a custom icon
Relations rules are run before any other set of rules (http://wiki.openstreetmap.org/wiki/Mkgmap/help/style_rules#Action_block)
Creates OSM files from SRTM radar elevation data

Main page: http://wiki.openstreetmap.org/wiki/Srtm2Osm
See also: [[contours]]
mkgmap style rules can be optionally extended via the stop/continue commands.
mkgmap style files consist of sets of rules which determine 
* which POIs and ways are in the map
* at what resolution they appear as you zoom in and out
* which categories a POI should be assigned to (eg. Fuel/Shops etc).  
The rules for converting points, lines and polygons are held in correspondingly named files, all of which must sit in a folder which has the name of your style (e.g. """MyStyle""").  The following style files may (or must) be used:
#version (''mandatory'')
**contains just the number 0
#info (//optional//)
**Contains a short description of the style and other information such as the author etc.
#options (//optional//)
**see [[optionsStyleFile]]
#points (//optional//)
**see [[pointsStyleFile]]
#lines (//optional//)
**see [[linesStyleFile]]
#polygons (//optional//)
**see [[polygonStyleFile]]
#relations (//optional//)
** see [[relationsStyleFile]]
#overlays (//optional//)
**see [[overlaysStyleFile]]
!Processing order
mkgmap processes the style files in order.  Thus if an element is defined both in the [[linesStyleFile]] and the [[polygonsStyleFile]] then it won't get processed twice //unless// you are using the [[continue|http://wiki.openstreetmap.org/wiki/Mkgmap/help/style_rules#continue]] directive in your style file rule.  The order of processing is:

As mentioned above, process order matters when you have OSM objects defined in multiple style files.  For instance, if you have a polygon in the OSM data that has both: {{{barrier=fence}}} and {{{landuse=industrial}}} only the {{{barrier=fence}}} bit will be processed by mkgmap (because it matches a rule in the [[linesStyleFile]] and no polygon will appear.  You can overcome this limitation by using the [[continue|http://wiki.openstreetmap.org/wiki/Mkgmap/help/style_rules#continue]] directive in your rule.  This has the effect of telling mkgmap to continue looking for further rules that match a given OSM object.  The continue directive thus allows you to take an OSM way which has the tags {{{barrier=fence }}} and {{{landuse=industrial}}} and and create both a fence line and an industrial land polygon in the resulting Garmin map.

!Setting lines to appear only at certain resolutions
You can use a style rule of the type
{{{highway=tertiary [0x008 resolution 24-22]}}} NB The order of the resolution levels matters: it has to be Max-Min
This syntax means that the line will only appear between zooms 22 and 24.  Clearly, it also means that at resolutions <22, there will be a gap where this line would otherwise have been, which may or may not be a problem
!!Useful links
* [[http://wiki.openstreetmap.org/wiki/Mkgmap/help/Custom_styles|http://wiki.openstreetmap.org/wiki/Mkgmap/help/Custom_styles]]
*[[This site|http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q2/002008.html]] has a test map which shows all Garmin types
If you run
{{{java -jar mkgmap.jar test-map:all-elements}}}
mkgmap will generate an test .img file containing icons and polylines of various styles, each annotated with their respective id.  The polylines appear at the origin of the map, you'll need to pan right (east) to see the icons.

You can change where the map starts by setting two environment variables first. Eg on linux, to start the map at 50N, 10E do this first: 
{{{ export BASE_LAT=50.0}}}
{{{ export BASE_LONG=10.0}}}

* See http://wiki.openstreetmap.org/wiki/Talk:Mkgmap/dev
Use wget to download specific parts of the OSM dataset
* Bounding box is given as [LEFT] [BOTTOM] [RIGHT] [TOP]

e.g. {{{wget http://www.informationfreeway.org/api/0.6/map?bbox=-0.557,51.319,0.308,51.707 -O data.osm}}}
downloads all data within the bounding box, where coordinates are given as left, bottom, right, top
{{{wget http://www.informationfreeway.org/api/0.6/node[place=*][bbox=-0.557,51.319,0.308,51.707] -O data.osm}}} downloads all place nodes withn the bounding box specified
all places in the UK
*{{{wget http://www.informationfreeway.org/api/0.6/node[place=*][bbox=-9.31641,49.49668,2.28516,61.27023] -O data.osm}}}
all UK admin_level 4
*{{{wget http://www.informationfreeway.org/api/0.6/way[admin_level=4][bbox=-9.31641,49.49668,2.28516,61.27023] -O UK_admin4.osm}}}
all London admin_level 4
*{{{wget http://www.informationfreeway.org/api/0.6/way[admin_level=4][bbox=-0.56305,51.23613,0.33508,51.72703] -O London_admin4.osm}}}
note is administrative boundary but boundary=administrative not set
*{{{wget http://www.informationfreeway.org/api/0.6/relation[note=administrative][bbox=-9.31641,49.49668,2.28516,61.27023] -O UK_adminCheck.osm}}}
*{{{wget http://www.informationfreeway.org/api/0.6/way[natural=coastline][bbox=-9.31641,49.49668,2.28516,61.27023] -O UK_coastline.osm}}}
*{{{wget http://osmxapi.hypercube.telascience.org/api/0.6/way[natural=coastline][bbox=-9.31641,49.49668,2.28516,61.27023] -O UK_coastline.osm}}}
!!New York
 {{{wget http://www.informationfreeway.org/api/0.6/map?bbox=-74.22913,40.49292,-71.75720,41.38093 -O USA_NewYork.osm}}}
!Useful links
* http://wiki.openstreetmap.org/wiki/Osmxapi
The GPSr itself has 24 degrees of resolution. 24 is the most zoomed in and the number decreases as you zoom out. Although the minimum zoom level would be 1 in theory, in practice 12 is about as far out as most Garmins can go.  mkgmap [[is currently|http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q3/003911.html]] hard-coded to use a resolution of 14 for the overview map.  ''Note that the overview map is [[only ever|http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q2/002397.html]] used in MapSource'''.
An img file doesn't hold information on how to draw things at each degree of resolution.  Instead it contains at most about 10 levels.  The level is a number between 0 and 16 with 0 being the highest level of detail.  A map consists of a number of levels starting (usually) with 0.  For example 0, 1, 2, 3 with a different amount of detail corresponding to each level.  The map also contains a table to link the level to the resolution.  For example, this would state that level 0 corresponds to resolution 24.  In mkgmap, the mapping between level and resolution is defined by the [[mkgmapOptionsFile]] file, for instance:
{{{levels = 0:24, 1:22, 2:20, 3:18, 4:16}}} (which is the default).

As there is no one-to-one mapping between levels and resolutions, the map doesn't contain information on every zoom level and so the GPSr will scale up/down from either the 22 or 24 zoom level (not sure which).  ''NB'' the GPSr itself lets you set the amount of detail on the map and this will affect what is visible at any given resolution.  This makes it very hard to have complete control on what appears at a certain resolution.  
!!style files
Each line in a style file specifies the resolution that a certain object (node/way) appears at, e.g. 
{{{highway=residential | highway=living_street [0x06 road_class=0 road_speed=2 resolution 23}}}
This means that you won't see the street until you are zoomed in to resolution 23.  If 23 doesn't correspond to a given level, then the GPSr will interpolate (again, don't know whether it does this up from more zoomed out, or down from more zoomed in).  If you zoom out, the object will disappear.  If anything is in a particular zoom level, it is also in all the more detailed ones.

This is what I have at the moment:

levels = 0:24, 1:22, 2:21, 3:20, 4:19, 5:18, 6:16, 7:12

I also (try) to make sure that only these resolutions are used in the lines and points file. I seem to recall that the mkgmap default style at the time (about 3 months ago) used some resolutions that weren't defined in options file. I guessed that maybe extra levels were being created inside mkgmap, which caused the total number of levels to exceed the maximum a map file can cope with and that maybe this caused the background to disappear as I zoomed out.
From: http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q3/003902.html

When using Mkgmap the most levels I have got it to handle is 8 using the following line:
levels = 0:23, 1:22, 2:21, 3:20, 4:19, 5:18, 6:16, 7:12
One thing to watch out for is that as well as using the levels in the options file mkgmap also seems to create extra levels if the StyleFile specifies a different zoom level (labeled as "resolution" in the style file) which isn't in the options file. For example (using my options line) if the StyleFile has a resolution of say 24 defined then mkgmap seems to create an extra level (making the total 9) which means when you fully zoom out things don't disappear because the maximum number of levels in the map file has been exceeded (I believe the default style file for mkgmap may be guilty of this). The trick is to decide what zoom levels you want to use, set those up in the options file and then make sure the lines/polygons/points files only use the corresponding resolutions.
From: http://forum.openstreetmap.org/viewtopic.php?id=3327
The following table maps mkgmap resolutions to the scale at which they apply, in both my """GPSMap76CSx""" and in MapSource.  As you can see, behaviour varies between MapSource and the GPS unit.

|!Index*|!Imperial|!Metric|!mkgmap resolution (normal detail setting)|!legend|!mkgmap resolution (medium detail setting)|!legend|h
|1|500mi|800km|bgcolor(#cccccc): |bgcolor(#cccccc): basemap |bgcolor(#cccccc):|bgcolor(#cccccc):   No map   |
|4|120mi|200km|~|~|12-16|   GPS Map Detail (NB starts @ 150mi)   |
|10|8mi|12km||~|18 (nb starts at 7 miles/15km)|~|
|23|120ft|30m|bgcolor(#F29327): |bgcolor(#F29327): overzoom |bgcolor(#F29327): |bgcolor(#F29327):  overzoom |

"""*""" This is just a count of each zoom level for reference.  It does not correspond to anything in particular
See also: http://home.online.no/~sigurdhu/12MAP_scales.htm
!!Detail setting effect
If you increase the level of detail in the GPS unit or in MapSource, the effect is to increase the effective resolution by one step.  E.g. if you adjust your GPS unit settings to go from //medium// to //more// and you are at a scale of 0.3m (aka resolution 22), you will be able to see objects that are supposed only to appear at resolution 23.
GPS units have their own ideas about the resolution certain things should appear at.  This is linked to the specific Garmin type of an object.  This means that even if you set one of these "special" types to appear at a certain resolution in your mkgmap styleFile, it may not behave as you expect.