wow-api-map-navigation

Map & Navigation API (Retail — Patch 12.0.0)

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "wow-api-map-navigation" with this command: npx skills add jburlison/wowaddonapiagents/jburlison-wowaddonapiagents-wow-api-map-navigation

Map & Navigation API (Retail — Patch 12.0.0)

Comprehensive reference for all map, navigation, and location APIs in WoW Retail.

Source: https://warcraft.wiki.gg/wiki/World_of_Warcraft_API Current as of: Patch 12.0.0 (Build 65655) — January 28, 2026 Scope: Retail only.

Scope

  • C_Map — Map data, coordinates, map IDs, areas

  • C_MapExplorationInfo — Fog of war / exploration data

  • C_AreaPoiInfo — Area Points of Interest

  • C_TaxiMap — Flight master/taxi routes

  • C_Vignette — Vignettes (rare mobs, treasures)

  • C_SuperTrackManager — Super tracking (waypoint tracking)

  • C_Navigation — In-game navigation system

  • C_ZoneAbility — Zone-specific abilities

  • C_FogOfWar — Fog of war system

  • Minimap — Minimap functions

  • C_NamePlateManager — Nameplate management

C_Map — Core Map System

Map Info & IDs

Function Returns Description

C_Map.GetBestMapForUnit(unitToken)

uiMapID

Best map for unit's location

C_Map.GetMapInfo(uiMapID)

mapInfo

Map name, type, parent

C_Map.GetMapInfoAtPosition(uiMapID, x, y)

mapInfo

Map info at coordinate

C_Map.GetMapChildrenInfo(uiMapID [, mapType [, allDescendants]])

childrenInfo

Child maps

C_Map.GetMapGroupID(uiMapID)

mapGroupID

Map group (floor group)

C_Map.GetMapGroupMembersInfo(mapGroupID)

membersInfo

Maps in group (floors)

C_Map.GetMapLinksForMap(uiMapID)

mapLinks

Map links (transitions)

C_Map.GetMapRectOnMap(uiMapID, parentMapID)

minX, maxX, minY, maxY

Map rect on parent

C_Map.GetPlayerMapPosition(uiMapID, unitToken)

position

Player position on map

C_Map.GetWorldPosFromMapPos(uiMapID, mapPosition)

continentID, worldPosition

Map → world coords

C_Map.GetMapPosFromWorldPos(continentID, worldPosition [, overrideUiMapID])

uiMapID, mapPosition

World → map coords

C_Map.GetFallbackWorldMapID()

uiMapID

Default world map

C_Map.GetBountySetMaps(bountySetID)

mapIDs

Maps for bounty set

C_Map.GetAreaInfo(areaID)

areaName

Area name by ID

C_Map.GetMapArtID(uiMapID)

mapArtID

Art asset ID

C_Map.GetMapArtBackgroundAtlas(uiMapID)

atlasName

Background atlas

C_Map.GetMapArtHelpTextPosition(uiMapID)

position

Help text position

C_Map.GetMapArtLayerTextures(uiMapID, layerIndex)

textures

Layer texture files

C_Map.GetNumMapArtLayers(uiMapID)

numLayers

Number of art layers

C_Map.GetMapArtLayers(uiMapID)

layers

All art layer info

C_Map.GetMapDisplayInfo(uiMapID)

hideIcons

Display flags

C_Map.GetMapHighlightInfoAtPosition(uiMapID, x, y)

fileDataID, atlasID, texturePercentageX, texturePercentageY, textureX, textureY, scrollChildX, scrollChildY

Highlight at position

C_Map.HasArt(uiMapID)

hasArt

Has map art?

C_Map.IsMapValidForNavBarDropdown(uiMapID)

isValid

Valid for navbar?

C_Map.MapHasArt(uiMapID)

hasArt

Alias for HasArt

C_Map.RequestPreloadMap(uiMapID)

— Preload map data

C_Map.SetUserWaypoint(uiMapID, position)

— Set user waypoint

C_Map.GetUserWaypoint()

point

Get user waypoint

C_Map.HasUserWaypoint()

hasWaypoint

Has user waypoint?

C_Map.ClearUserWaypoint()

— Clear user waypoint

C_Map.CanSetUserWaypointOnMap(uiMapID)

canSet

Can set waypoint?

C_Map.GetUserWaypointHyperlink()

hyperlink

Waypoint hyperlink

C_Map.GetUserWaypointFromHyperlink(hyperlink)

point

Parse waypoint link

C_Map.GetUserWaypointPositionForMap(uiMapID)

mapPosition

Waypoint on map

Map Types (Enum.UIMapType)

Value Type Description

0 Cosmic All continents

1 World Shows continents

2 Continent Single continent

3 Zone Zone (e.g., Durotar)

4 Dungeon Dungeon floors

5 Micro Subzone

6 Orphan Standalone map

C_MapExplorationInfo — Exploration

Function Returns Description

C_MapExplorationInfo.GetExploredMapTextures(uiMapID)

textures

Explored area textures

C_MapExplorationInfo.GetExploredAreaIDsAtPosition(uiMapID, position)

areaIDs

Explored area IDs at pos

C_AreaPoiInfo — Area Points of Interest

Function Returns Description

C_AreaPoiInfo.GetAreaPOIForMap(uiMapID)

poiIDs

All POIs on map

C_AreaPoiInfo.GetAreaPOIInfo(uiMapID, poiID)

poiInfo

POI details

C_AreaPoiInfo.GetAreaPOISecondsLeft(poiID)

secondsLeft

Time-limited POI timer

C_AreaPoiInfo.GetAreaPOITimeOfDay()

hours, minutes

POI time context

C_AreaPoiInfo.IsAreaPOITimed(poiID)

isTimed

Is POI time-limited?

POI Info Fields

  • areaPoiID — Unique POI ID

  • position — {x, y} on map

  • name — Display name

  • description — Description text

  • textureIndex — POI icon index

  • atlasName — Atlas for icon

  • uiTextureKit — Texture kit

  • tooltipWidgetSet — Tooltip widget set

  • iconWidgetSet — Icon widget set

  • availableInPlayerChoice — Available in player choice

C_TaxiMap — Flight Paths / Taxi

Function Returns Description

C_TaxiMap.GetAllTaxiNodes(uiMapID)

nodes

All flight nodes on map

C_TaxiMap.GetTaxiNodesForMap(uiMapID)

nodes

Available taxi nodes

C_TaxiMap.ShouldMapShowTaxiNodes(uiMapID)

shouldShow

Show taxi nodes on map?

NumTaxiNodes()

numNodes

Available nodes at taxi NPC

TaxiNodeName(index)

name

Node name

TaxiNodePosition(index)

x, y

Node position

TaxiNodeGetType(index)

nodeType

REACHABLE, UNREACHABLE, CURRENT

TaxiGetDestX(index, i)

x

Route destination X

TaxiGetDestY(index, i)

y

Route destination Y

TaxiGetSrcX(index, i)

x

Route source X

TaxiGetSrcY(index, i)

y

Route source Y

GetNumRoutes(index)

numRoutes

Route segments count

TakeTaxiNode(index)

— Take flight to node

CloseTaxiMap()

— Close taxi map

TaxiRequestEarlyLanding()

— Request early landing

UnitOnTaxi(unit)

onTaxi

Is unit on a taxi?

C_Vignette — Vignettes (Rare Mobs, Treasures, Events)

Function Returns Description

C_VignetteInfo.GetVignetteInfo(vignetteGUID)

info

Vignette details

C_VignetteInfo.GetVignettes()

vignetteGUIDs

All active vignettes

C_VignetteInfo.GetVignettePosition(vignetteGUID, uiMapID)

position

Vignette position on map

C_VignetteInfo.FindBestUniqueVignette(vignetteID)

bestGUID

Best unique vignette

Vignette Info Fields

  • vignetteGUID — Unique identifier

  • objectGUID — Object GUID (unit, object, etc.)

  • name — Display name

  • atlasName — Icon atlas

  • type — Vignette type (Normal, PvPBounty, Torghast, etc.)

  • isDead — Is the linked unit dead?

  • onWorldMap — Shows on world map?

  • onMinimap — Shows on minimap?

  • hasTooltip — Has mouseover tooltip?

  • inFogOfWar — In unexplored area?

  • widgetSetID — UI widget set

C_SuperTrackManager — Waypoint Super Tracking

Function Returns Description

C_SuperTrack.GetSuperTrackedContent()

trackableType, trackableID

Currently tracked content

C_SuperTrack.GetSuperTrackedMapPin()

type, typeID

Tracked map pin

C_SuperTrack.GetSuperTrackedQuestID()

questID

Super tracked quest

C_SuperTrack.SetSuperTrackedContent(trackableType, trackableID)

— Set tracked content

C_SuperTrack.SetSuperTrackedMapPin(type, typeID)

— Set tracked map pin

C_SuperTrack.SetSuperTrackedQuestID(questID)

— Track quest

C_SuperTrack.SetSuperTrackedUserWaypoint(superTracked)

— Track user waypoint

C_SuperTrack.IsSuperTrackingAnything()

isTracking

Is tracking anything?

C_SuperTrack.IsSuperTrackingCorpse()

isTrackingCorpse

Tracking corpse?

C_SuperTrack.IsSuperTrackingQuest()

isTracking

Tracking a quest?

C_SuperTrack.IsSuperTrackingUserWaypoint()

isTracking

Tracking user waypoint?

C_SuperTrack.ClearAllSuperTracked()

— Clear all tracking

C_Navigation — In-Game Navigation

Function Returns Description

C_Navigation.GetDistance()

distance

Distance to tracked target

C_Navigation.GetFrame()

frame

Navigation frame

C_Navigation.HasValidScreenPosition()

hasValidPos

Is nav arrow valid?

C_Navigation.WasClampedToScreen()

wasClamped

Was arrow clamped?

C_ZoneAbility

Function Returns Description

C_ZoneAbility.GetActiveAbilities()

abilities

Active zone abilities

C_FogOfWar

Function Returns Description

C_FogOfWar.GetFogOfWarForMap(uiMapID)

fogOfWarID

Fog of war ID for map

C_FogOfWar.GetFogOfWarInfo(fogOfWarID)

info

Fog of war info

Minimap Functions

Function Returns Description

GetMinimapZoneText()

zoneText

Minimap zone text

GetZoneText()

zoneText

Current zone name

GetSubZoneText()

subZoneText

Current subzone

GetRealZoneText()

zoneText

Real zone text

GetMinimapShape()

shape

ROUND or SQUARE

Minimap:SetZoom(zoomLevel)

— Set minimap zoom

Minimap:GetZoom()

zoomLevel

Get minimap zoom

Minimap:GetZoomLevels()

numLevels

Max zoom levels

ToggleMinimap()

— Toggle minimap visibility

C_NamePlateManager / Nameplates

Function Returns Description

C_NamePlate.GetNamePlates([includeForbidden])

nameplates

All activated nameplates

C_NamePlate.GetNamePlateForUnit(unitToken [, includeForbidden])

nameplate

Nameplate for unit

C_NamePlate.GetNumNamePlates()

numActive

Active nameplates count

C_NamePlate.SetNamePlateFriendlySize(width, height)

— Set friendly plate size

C_NamePlate.SetNamePlateEnemySize(width, height)

— Set enemy plate size

C_NamePlate.SetNamePlateSelfSize(width, height)

— Set personal plate size

C_NamePlate.SetNamePlateFriendlyClickThrough(clickThrough)

— Click through friendly

C_NamePlate.SetNamePlateEnemyClickThrough(clickThrough)

— Click through enemy

C_NamePlate.SetNamePlateSelfClickThrough(clickThrough)

— Click through personal

12.0.0 Note: Nameplates in instances are tightly restricted. Enemy nameplate unit tokens may expose only secret values for health, casting, etc.

Coordinate Conversion

Map Position Object

C_Map.GetPlayerMapPosition() returns a Vector2DMixin with:

local pos = C_Map.GetPlayerMapPosition(mapID, "player") if pos then local x, y = pos:GetXY() -- x, y are 0-1 normalized coordinates on the map print(string.format("%.2f, %.2f", x * 100, y * 100)) end

Convert Between Maps

-- Get player position on the current best map local mapID = C_Map.GetBestMapForUnit("player") if mapID then local pos = C_Map.GetPlayerMapPosition(mapID, "player") if pos then -- Convert to world coordinates local continentID, worldPos = C_Map.GetWorldPosFromMapPos(mapID, pos) -- Convert back to a different map local otherMapID, otherPos = C_Map.GetMapPosFromWorldPos(continentID, worldPos) end end

User Waypoint

-- Set a waypoint on the map local mapID = C_Map.GetBestMapForUnit("player") if C_Map.CanSetUserWaypointOnMap(mapID) then local point = UiMapPoint.CreateFromCoordinates(mapID, 0.5, 0.5) C_Map.SetUserWaypoint(point) C_SuperTrack.SetSuperTrackedUserWaypoint(true) end

Key Events

Event Payload Description

ZONE_CHANGED

— Subzone changed

ZONE_CHANGED_INDOORS

— Indoor zone changed

ZONE_CHANGED_NEW_AREA

— Major zone change

NEW_WMO_CHUNK

— New world map object

MAP_EXPLORATION_UPDATED

— Exploration updated

WORLD_MAP_UPDATE

— World map data changed

USER_WAYPOINT_UPDATED

— User waypoint changed

SUPER_TRACKING_CHANGED

— Super tracking changed

VIGNETTE_MINIMAP_UPDATED

vignetteGUID, onMinimap Vignette on minimap changed

VIGNETTES_UPDATED

— Vignettes updated

AREA_POIS_UPDATED

— Area POIs changed

NAME_PLATE_CREATED

namePlateFrame Nameplate created

NAME_PLATE_UNIT_ADDED

unitToken Unit added to nameplate

NAME_PLATE_UNIT_REMOVED

unitToken Unit removed from nameplate

PLAYER_STARTED_MOVING

— Player started moving

PLAYER_STOPPED_MOVING

— Player stopped moving

TAXIMAP_OPENED

systemID Taxi map opened

TAXIMAP_CLOSED

— Taxi map closed

NAVIGATION_FRAME_CREATED

— Nav frame created

NAVIGATION_FRAME_DESTROYED

— Nav frame destroyed

Gotchas & Restrictions

  • GetPlayerMapPosition returns nil — Returns nil for units in instances where position tracking is restricted or for invalid map IDs.

  • Map coordinates are 0-1 normalized — Not world coordinates. Use GetWorldPosFromMapPos() to convert.

  • uiMapID vs areaID — These are different ID systems. C_Map.GetAreaInfo() takes areaID, not uiMapID.

  • Nameplate secrets in 12.0.0 — In instances, enemy nameplate unit data (health, casting, name) may be secret values.

  • TakeTaxiNode hardware event — Requires a hardware event to execute (must be called from a click handler).

  • Vignette GUIDs are transient — Vignette GUIDs change when you zone or reload. Don't persist them.

  • Map group = floors — Dungeon maps with multiple floors use map groups. Each floor is a separate uiMapID in the group.

  • Waypoint limit — Only one user waypoint can exist at a time. Setting a new one replaces the old.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

wow-lua-api

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

wow-addon-structure

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

wow-api-settings-system

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

wow-api-achievements

No summary provided by upstream source.

Repository SourceNeeds Review