> ## Documentation Index
> Fetch the complete documentation index at: https://docs.elementlabs.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Map

> Turn the map's panels on or off, tune how the mouse drives the camera, and choose the map's sounds.

`configs/map.jsonc` holds what the **Map** tab has that no other tab does: its on-screen panels, how
the camera answers the mouse, and the sounds it plays. The camera's range and movements, the world
under it, the markers, the labels and the route each have a file of their own, listed in
[Configuration](https://docs.elementlabs.net/products/3d-pause-menu/configuration/index.md).

How a configuration file is read and merged is described once, in [How configuration works](https://docs.elementlabs.net/configure/files.md).

## Settings

### Panels

| Key | Default | Shows |
| - | - | - |
| `hud.profile` | `true` | The player card: name, server id and character portrait. |
| `hud.scale` | `true` | The scale bar, showing what distance one screen length covers. |
| `hud.location` | `true` | The street and area under the centre of the camera. |

Each is independent, and turning one off removes it entirely. The legend and the tab bar are always
present. A [view](https://docs.elementlabs.net/products/3d-pause-menu/reference/views.md) may turn any of these panels off for the
map it draws, and the legend, the crosshair and the tab bar with them.

The player card shows the character name reported by your framework, falling back to the FiveM
account name when the framework has none, and the player's server id. The portrait is generated from
the character in game. Another resource can replace any of the three: see
[Exports](https://docs.elementlabs.net/products/3d-pause-menu/reference/exports.md).

The scale bar uses the unit set in the player's own game settings, so a player using imperial units
sees miles and a player using metric sees kilometres.

The location readout shows the street and the area the camera is over, not the ones the player is
standing in. It goes blank over water and open country, where the game has no street name to report.

### Camera feel

Which inputs a player uses is fixed: dragging is always the left mouse button or the left stick,
zooming is always the wheel or the triggers, and setting a destination is always the right button, a
double click, or **A** on a controller. These keys set how those inputs feel. The full list is in
[How players use the menu](https://docs.elementlabs.net/products/3d-pause-menu/using-the-map.md).

| Key | Default | Meaning |
| - | - | - |
| `input.dragSensitivity` | `1.0` | How far the map moves for a given mouse movement. At `1.0` the ground a player takes hold of stays under the cursor; `2.0` moves it twice as far. |
| `input.zoomStep` | `0.2` | The share of the camera's height above the ground that one step of the wheel takes off when zooming in. `0.2` is a fifth; zooming out one step puts it back. |
| `input.zoomHoldRate` | `2.0` | How many times a second a held zoom key or trigger halves that height, or doubles it. |
| `input.friction` | `0.6` | How quickly a drag decays after the button is released. Lower settles sooner; higher glides longer. |
| `input.doubleClickMs` | `300` | The longest gap, in milliseconds, between two clicks that still counts as a double click. |
| `input.detailKey` | `56` | The control that switches markers between full and reduced detail. `56` is the controller's right-stick click, the button the game's own map uses. It is a control index, not a key name. |

Dragging and zooming are both relative to the camera's height above the ground under it. A drag moves
the map by what the cursor moved on screen, so it covers more ground when the camera is higher and
stays exact close to the ground, and a zoom step changes the height above the ground under the camera by the
same share everywhere: 600 m of 3000 m, 3 m of 15 m. The picture grows by the same amount each step,
so the defaults work at every zoom level, over the sea and over a hilltop alike.

### Sound

| Key | Default | Plays when |
| - | - | - |
| `sound.enabled` | `true` | The master switch. `false` silences every sound below. |
| `sound.soundset` | `"HUD_FRONTEND_DEFAULT_SOUNDSET"` | The game's set every sound below is taken from. |
| `sound.pan` | `"MAP_MOVEMENT_MOUSE"` | The camera is being dragged. It plays while the drag continues and rises with how fast the camera moves. |
| `sound.zoom` | `"MAP_ZOOM"` | The camera is zooming. |
| `sound.select` | `"SELECT"` | A marker is selected. |
| `sound.waypoint` | `"WAYPOINT_SET"` | A destination is set. |
| `sound.poi` | `"WAYPOINT_SET"` | A point of interest is placed or removed. |

Each sound is a name in the game's set named by `sound.soundset`. An empty name, `""`, turns that
one sound off. A name that is not in the set plays nothing, with no error. The settings screen has
sounds of its own: see [Settings](https://docs.elementlabs.net/products/3d-pause-menu/configuration/settings.md).

Choosing a tab on the bar plays the pause menu's own tab sound, at each player's **SFX volume**.
`sound.enabled` set to `false` turns it off with the rest.

## Example

A map without the player card, with a lighter drag and without the continuous sounds:

```jsonc theme={null}
{
  "namespace": "map",
  "configVersion": 1,
  "scope": "client",
  "values": {
    "hud": {
      "profile": false
    },
    "input": {
      "dragSensitivity": 1.4,
      "friction": 0.45
    },
    "sound": {
      "pan": "",
      "zoom": ""
    }
  }
}
```

Each group is merged key by key, so everything not listed keeps its shipped value.

## Applying changes

```text theme={null}
restart element_3d_pausemenu
```

## Limits

| Key | Stay within | Why |
| - | - | - |
| `input.friction` | Above `0`, below `1` | At `1` or above, movement never settles and the camera drifts after every drag. At `0` it stops the instant the button is released, which feels abrupt but is usable. |
| `input.dragSensitivity` | Roughly `0.5` to `2.0` | Far above that, a small hand movement crosses the map and precise positioning becomes impossible. |
| `input.zoomStep` | Above `0`, roughly `0.1` to `0.4` | At `1` or above there is no height left to take a share of, and the zoom stops working. Close to `1`, one step goes from the top of the map to the ground. |
| `input.zoomHoldRate` | Roughly `1` to `4` | Far above that, a short press crosses the whole range and the height cannot be chosen. |
| `input.doubleClickMs` | Roughly `200` to `500` | Below that, double clicks are hard to perform. Above it, a click on a marker takes noticeably long to act, because the map waits to see whether a second click follows. |
| `sound.soundset` and every sound name | Names that exist together in the game | Change the set and the names together, and check each action in game. |
| `hud.*` | `true` or `false` | Any other value is used as written and produces behaviour that is neither. |

Turning off `hud.profile` also stops the character portrait being generated, which removes a small
amount of work each time the map opens. Dragging and zooming are the sounds players notice most in
a long session; if you are unsure, turn those two off and leave the rest.

## Related

* [Configuration](https://docs.elementlabs.net/products/3d-pause-menu/configuration/index.md)
* [Camera](https://docs.elementlabs.net/products/3d-pause-menu/configuration/map-camera.md)
* [How players use the menu](https://docs.elementlabs.net/products/3d-pause-menu/using-the-map.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.