I'm going to bed very shortly, so I'll give you a short answer to get you started, if you need further assistance I'll lend a hand once I wake up.
Obviously you'll need to work with a campaign, with all your regions (maps) in it.
To make the actual map-switching, you'll need a region covering the area where you want the "teleportation" to take place.
Once that's set up, make a trigger that detects when your hero enters the region. Save all the stuff that you'll need in the next map (your hero, for example) in a gamecache, and then use the following action to switch map:
-
Game - Set the next level to Maps\MapName.w3m
Your full trigger would probably look a little something like this:
-
Untitled Trigger 001
-

Events
-


Unit - A unit enters YourRegion
-

Conditions
-


(Triggering unit) Equal to YourHero
-

Actions
-


Game Cache - Create a game cache from YourGameCache.w3v
-


Set YourGameCache = (Last created game cache)
-


Game Cache - Store YourHero as YourHero'sName of Heroes in YourGameCache
-


Game Cache - Save YourGameCache
-


Game - Set the next level to YourNextMap
And then on the next map. You'll need to create your Game Cache again (using the same name as you did for the Game Cache on the previous map) and load your unit from it. It would probably end up like this:
-
Untitled Trigger 001
-

Events
-

Conditions
-

Actions
-


Game Cache - Create a game cache from YourGameCache.w3v
-


Set YourGameCache = (Last created game cache)
-


Game Cache - Restore YourHero'sName of Heroes from YourGameCache for YourPlayer at YourRegion facing YourAngle
For further reading regarding Game Caches and how to utilize them, see
this tutorial.
I'm sorry for the rushed reply, I hope I've been of at least some aid.
Edit: I forgot the last trigger leaks memory (which can cause the map to start lagging), to solve this, simply make the trigger like this:
-
Untitled Trigger 001
-

Events
-

Conditions
-

Actions
-


Set HeroSpawn = HeroSpawn
-


Game Cache - Create a game cache from YourGameCache.w3v
-


Set YourGameCache = (Last created game cache)
-


Game Cache - Restore YourHero'sName of Heroes from GameCache for YourPlayer at HeroSpawn facing YourDesiredAngle
-


Custom script: call RemoveLocation(udg_HeroSpawn)
For more information on memory leaks, see
this.