I want to share my current solution for this request. Thanks to votan who sent me some code snippets from his AddOn that I could use as base for my solution!

I'm now using the EVENT_EXPERIENCE_GAIN event in combination with the following code.
Lua Code:
POIEventType = {
NONE = 0,
DARK_ANCHOR = 1,
ABYSSAL_GEYSERS = 2,
HARROWSTORM = 3,
}
-- Lookup table for zones that can have the for example dark anchors
POIZoneTypes = {}
POIZoneTypes.DarkAnchors = {
[3] = 1,
[19] = 1,
[20] = 1,
[41] = 1,
[57] = 1,
[58] = 1,
[92] = 1,
[101] = 1,
[103] = 1,
[104] = 1,
[108] = 1,
[117] = 1,
[181] = 1,
[381] = 1,
[382] = 1,
[383] = 1,
}
POIZoneTypes.AbyssalGeysers = {
[1011] = 1,
}
POIZoneTypes.Harrowstorms = {
[1160] = 1,
[1207] = 1,
}
function MyAddon.EventExperienceUpdate(_, reason)
if reason == PROGRESS_REASON_SCRIPTED_EVENT then
local poiType = POIEventType.NONE
local px, py = GetMapPlayerPosition("player")
local zoneIndex = GetCurrentMapZoneIndex()
local x, y, icon
for poiIndex = 1, GetNumPOIs(zoneIndex) do
x, y, _, icon = GetPOIMapInfo(zoneIndex, poiIndex)
if icon == "/esoui/art/icons/poi/poi_portal_complete.dds" or icon == "/esoui/art/icons/poi/poi_portal_incomplete.dds" then
x, y = x - px, y - py
x, y = x * x, y * y
if (x + y) < 0.0001 then
local zoneId = tonumber(GetZoneId(zoneIndex))
local parentZoneId = tonumber(GetParentZoneId(zoneId))
if type(POIZoneTypes.DarkAnchors[zoneId]) ~= "nil" or type(POIZoneTypes.DarkAnchors[parentZoneId]) ~= "nil" then
poiType = POIEventType.DARK_ANCHOR
break
elseif type(POIZoneTypes.AbyssalGeysers[zoneId]) ~= "nil" or type(POIZoneTypes.AbyssalGeysers[parentZoneId]) ~= "nil" then
poiType = POIEventType.ABYSSAL_GEYSERS
break
elseif type(POIZoneTypes.Harrowstorms[zoneId]) ~= "nil" or type(POIZoneTypes.Harrowstorms[parentZoneId]) ~= "nil" then
poiType = POIEventType.HARROWSTORM
break
end
end
end
end
-- Use poiType to check what kind of POI event has finished
-- Example:
if poiType == POIEventType.DARK_ANCHOR then
-- Do something
end
end
end
EVENT_MANAGER:RegisterForEvent("MyAddon", EVENT_EXPERIENCE_GAIN, MyAddon.EventExperienceUpdate)