The map worked out the player's zone from geometry alone: of the WorldMapArea
boxes containing them, take the one they sit deepest inside. Those boxes are
axis-aligned rectangles around irregular zones, so neighbours overlap heavily —
the comment on that code already says as much — and the answer is a guess. It
guessed wrong often enough to open on a zone the player was merely near.
The server says which zone the player is in, in SMSG_INIT_WORLD_STATES, and the
client has been tracking it as worldStateZoneId_ for other things all along. It
is the same AreaTable id space WorldMapArea keys on, so it names a zone
directly. Use it, and keep the geometry only for when the server has not said —
before the first world-state packet, or for a zone that is not on the map
currently displayed.
Threaded to the exploration tracker and the player marker as well as the zone
the map opens on. All three answered this question separately, so leaving any
of them on the guess would show as a marker or a revealed area disagreeing with
the zone in front of you.
Tests cover the id winning over the geometry, the id winning even where the
player's own zone box does not reach them, and the fallback for an id that
names nothing on this map.