Back
The Elder Scrolls Online

LibMapData

Overview

For my use case I need one central mod to control the map information of where the player is. I don't want to call SetMapToPlayerLocation() and CALLBACK_MANAGER:FireCallbacks("OnWorldMapChanged") at various times in 5 mods.

Intent

For my use case I need one central mod to control the map information of where the player is. I don't want to call SetMapToPlayerLocation() and CALLBACK_MANAGER:FireCallbacks("OnWorldMapChanged") at various times in 5 mods.

With this library used as a dependency for the intended mods, FireCallbacks:OnWorldMapChanged is only used when GetMapTileTexture() changes. This reduces the chance that the mods it is used with are changing the map too frequently.

Grated SetMapToPlayerLocation() is called when the player closes the map and for events EVENT_ZONE_CHANGED, EVENT_LINKED_WORLD_POSITION_CHANGED, and EVENT_PLAYER_ACTIVATED to make sure the map information is current.

However, it happens within the library not the mods that depend on it resulting in fewer calls to those API commands for maps.

Intended use, for now

This will be used eventually with Destinations, Quest Map, LibQuestData, Skyshards, Lorebooks, and ScrySpy.

You could use it to convert a zoneId, mapIndex, or texture name mod to mapIds only. Although some map names and textures have multiple mapIds. You would have to manually convert anything that has multiple mapIds.

Current State

Work in progress but since it will be used with 5 mods at least then I will upload it and update it as I go.

Upcoming Additions

A pseudo mapIndex for all the various submaps in a zone. This can be used to gather pins for the entire map all at once. If you format your pin data with proper keys then you can display pins for both the mapId for the city and the zone itself without the need for two pin locations. Only needing a separate pin if the map pin information is from a Delve or Public dungeon where the player is underground.

Possible addition for a specialized scale that will place a map pin from a subZone or Dungeon map on the main zone without the need for additional pin data. This is a current system for Quest Map. The scale is created by measuring the map after placing a player waypoint. Written by CaptainBlagbird for Quest Map.

Also possible API for attaching map pins to the POI using something like GetPOIMapInfo() rather then a scale system as mentioned above. Destinations uses a table for the unknown POI built from the available POIs on the current map. As long as you know which POI you need the pin to be close to then the pin would use the POIs coordinates.

Slash Commands

NOTE: I use the DebugLogViewer's Quick View to see the player location information

/lmdgetpos : Returns the player location information and coordinates

Current API

local LMD = LibMapData

Global Variables

Note: Only use the game API for the x,y coordinates GetMapPlayerPosition("player") and if used with LibGPS then convert the local coordinates to global or whatever you need.

If you need the following access it from LMD

lib.zoneIndex
lib.mapIndex
lib.mapId
lib.zoneId
lib.mapTexture
lib.isMainZone
lib.isSubzone
lib.isWorld
lib.isDungeon
lib.zoneName
lib.mapName
lib.subzoneName
lib.currentFloor
lib.numFloors

If you do any for loops for the mapIndex, mapId, zoneIndex or zoneId you can use the following. This includes High Isle.

lib.MAPINDEX_MIN = 1
lib.MAPINDEX_MAX = 46
lib.MAX_NUM_MAPIDS = 2223
lib.MAX_NUM_ZONEINDEXES = 907
lib.MAX_NUM_ZONEIDS = 1364

for i = 1, lib.MAX_NUM_MAPIDS do
mapName = GetMapNameById(i)
if mapName ~= "" then
<< Do Stuff>>
end
end

Functions

lib:GetMapIdByTileTexture(tileTexture)
Given: String, full texture name of map see lib:GetMapTileTextureFromMapId()
Returns a table of the mapId numbers for that texture name. There can be more the one mapId.

lib:GetMapIdByMapName(mapName)
Given: String, can be obtained with GetMapNameById()
Returns a table of the mapId numbers for the given map name. There can be more the one mapId.

lib:ReturnSingleIndex(indexTable)
Given: Table
Returns a single value from a mapId table such as GetMapIdByMapName(). Returns nil and a LibDebugLogger warning if there is more then one mapId.

lib:GetZoneMapIdFromMapId(mapId)
Given: integer
Returns the mapId for the zone regardless of the map you are on. For example if you are in The Hall of the Dead it will not return the mapId of Windhelm, you will get the mapId for Eastmarch.

lib:GetZoneMapIdFromZoneId(zoneId)
Given: integer
Returns the mapId for the zone regardless of the map you are on. For example if you are in The Hall of the Dead it will not return the mapId of Windhelm, you will get the mapId for Eastmarch.

lib:GetMapTileTextureFromMapId(mapId)
Given: integer
Returns the first tile index from GetMapTileTextureForMapId() for the given mapId for use with GetMapIdByTileTexture() or for use with your mod if you prefer using map textures to mapId.

Callbacks

lib:RegisterCallback()
lib:UnregisterCallback()

lib.callbackType.EVENT_ZONE_CHANGED = "LibMapDataEventZoneChanged"
lib.callbackType.EVENT_LINKED_WORLD_POSITION_CHANGED = "LibMapDataEventLinkedWorldPositionChanged"
lib.callbackType.EVENT_PLAYER_ACTIVATED = "LibMapDataEventPlayerActivated"
lib.callbackType.OnWorldMapChanged = "LibMapDataOnWorldMapChanged"
lib.callbackType.WorldMapSceneStateChange = "LibMapDataWorldMapSceneStateChange"

ABOUT THIS LISTING

This page describes LibMapData by Sharlikran. The description and screenshots are the author's own, imported from their listing on ESOUI on 3 October 2026: https://www.esoui.com/downloads/info3353-LibMapData.html

Mythiq.net hosts no files for it. The download button goes straight to the release file on cdn.esoui.com, so you are downloading from the author's own host, not from a copy of ours.

The download count, rating and comments on this page start at zero and count Mythiq.net only. The source's own figures are not copied here — they measure a different site, and a number that cannot be checked against our own ledger is not worth printing.

Requirements

Game version
  • 11.3.0
API VERSION

Built for ESO API version 11.3.0. After a patch the game marks add-ons built for the previous API as out of date; the "Allow out of date add-ons" checkbox in the add-on menu loads them anyway, and most work.

LIBRARIES

Many ESO add-ons depend on a shared library — LibAddonMenu-2.0 above all — which is installed separately, exactly like an add-on. A dependency that is missing shows as the add-on simply not appearing in the list.

CONSOLE

Add-ons are PC and Mac only. There is no way to load them on console.

Installation

1. Download the archive with the button on this page and unzip it.

2. Move the unzipped folder into your add-ons directory:

Windows — Documents\Elder Scrolls Online\live\AddOns

macOS — ~/Documents/Elder Scrolls Online/live/AddOns

3. Start the game, and at the character select screen click Add-Ons.

4. Tick the add-on. If it is greyed out and marked out of date, tick "Allow out of date add-ons" at the top of the same panel.

5. Log in. Most add-ons need a /reloadui after they are first enabled.

UPDATING

Delete the old folder first. ESO loads everything it finds, and two copies of one add-on is the usual cause of "an add-on has produced an error" on login.

This release downloads from cdn.esoui.com, not from us, so there is no checksum to compare against. Scan the archive before you unpack it.

Version history

  1. v1.22 Latest 3 Jul 2026 · 25 KB via cdn.esoui.com · 0 downloads Download
    v120, v121

    - Rough draft for Solstice changes

    v118, v119

    - Rough Draft for Seasons of the Worm Cult Pt2 U48

    v117

    - Rough Draft for Seasons of the Worm Cult Pt1 U46

    v116

    - Added subZoneId when present

    v115

    - API bump for Update 44

    v114

    - Added Eyevea

    v113

    - Rough Draft for Gold Road

    v112

    - API Bump

    v111

    - Rough Draft for PTS

    v110

    - API Bump

    v109

    - Added check for arubis

    v108

    - Added function for overland map for Destinations

    v107

    - More Updates to how switching zones or areas on the map alters the internal variables for use with other mods like Lorebooks and how they get their map pin information

    v106

    - Updated detection routines when player moves between areas

    v105

    - Added new zone data for future updates

    v104

    - Pre PTS Version

    v103

    - Hotfix for version mismatch

    v102

    - Added RegisterCallback and UnregisterCallback for updating pins or other map related information from LibMapData without the need for the mod to check and verify the map state independently of LibMapData

    v101

    - Hotfix for: LibMapData.lua:160: table index is nil

    Off-site on cdn.esoui.com — no checksum, because we never held this file. Link checked by our review team on 3 Oct 2026.

Comments

No comments yet.

Sign in to leave a comment.

Report this mod

Tell us if something is wrong — a file that will not work, content taken from someone else, or anything that looks unsafe. Reports go to our review team, not to the author.

Sign in to report this mod.

We use cookies to ensure that we give you the best experience on our website and improve your experience. By continuing to use this site you consent to such use of cookies.

Learn More