One thing I would advise beginners to do is start with a big, like BIGGEST possible map ever

But, let's say you want to start with a 100x 100 map.
<>The largest size is 250x250 which I am dealing with in my current Chapter of the game.
<> When you increase the size of the map (say from 100x100 to 250x250) the size will always increase rightwards for X and downwards for Y directions respectively. That being said, always start from the left corner and expand slowly until you fill the space. Need more space? Expand the map a bit more.
<> When making the map smaller, it will decrease in size the opposite way: leftwards for X and upwards for Y (keep this in mind, because if you want to add pictures in your game, the location on the screen will use this same principle - ask me on that if you need, I have been using different software's pictures in my game for a few months now).
<> Why a huge map? Well... simple. You create small little "maps" on the big one, leaving blank spaces in between. You'll have to test it out to see how much the player can move around each possible "map" until another part can be seen (which you'd prefer not to allow). In the picture below I set an example from my game, from a Chapter I will work on some other time. Those are some house interiors. The upper two have 14 black squares in between them (counted them now, not when I did them) so the player will not see even the edges of the other ones. Similarly, you can create the rooms and different environments on the same map, and just teleport the player from one to another (with or without that "black screen" option that is ticked by default, which I can say you can leave there - or set it to white instead for a lil' extra feel when "porting the player back in time"). Why would this be helpful? Well, no more map switching for this part, and you can make an entire "chapter" this way, only porting the player away from the map when the chapter is done and the player really has no more need of this map. Therefore, you get beyond events' resetting (variables don't reset on map change).
<> If you want your characters to remain in that fixed position forever, it's easy. Did you use the plugin from Ossra? It will help. First time when the player gets on the map you have the characters move around. Learn how to use the plugin's commands and use it for its ability: create an event that will trigger BEFORE each other events on your maps. What you do is simple (now that I have a clear vision of your ideas ^^):
<> --- <> 1. create a conditional for your Parallel Event characters. Add an Else branch also.
<> --- <> 2. Add a variable to that conditional for each of the characters.
<> --- <> 3. Conditional will trigger only if current character's variable is 0. It results in the characters doing their movement, and switching to the A self-switch. Now what?
<> --- <> 4. Set each of those variables to 1 (so conditional won't trigger anymore).
"Wouldn't that disable the self-switch also??"
<> Good question, though you don't put self switch A ON and Event Switch OFF in the conditional

So they are read by the system regardless of the conditional being triggered or not.
<> --- <> 5. Now the magical "Else": add a conditional if "same event variable" is >=1 then teleport this character to the magical locale they will be pinned to. Forever.
<> It would be advisable to make it that the player won't be able to leave the map until the events can trigger that variable to 1, else they will keep repeating (though I doubt players will just reset maps, unless they are some maniacal exploit-huntin' tester like I prefer being).
<> If they trigger their variables to 1 they will be pinned to their location (don't forget to also set their DIRECTION in the teleport event to location panel!). However, they will still be teleported there through their own Else branch. If by any reason it won't look visually pleasing (the player can see it), there are 3 ways around this:
I. use Ossra's plugin and put the conditional in the else branches inside the event that you designate to use with Ossra's plugin functionality. You can safely delete the Else branches afterwards.
II. the easiest way to avoid the player seeing this is to "cheat" a bit. When the player teleports there you use the Fade Out function to make the screen entirely black (hides pictures you may have added on the screen, but even in Fade Out writing can be seen - I mean text boxes, so you can use this with intro events). Now, you can add a Wait 90 or 120 frames (1second and a half/ 2 seconds) then use the magical Fade In screen so that you restore visibility

The teleport function is before - teleport fade out, wait fade in. Events will continue their functionality even if you teleport the player to another map. When they end, they won't trigger again, cause they on another map. What this specifically does is simple: teleport to player, wait then regain sight. Why this? So the player does not see your events being teleported if they load too fast. And the events being parallel they will do their code lines without taking into account the wait the player has to wait. 1 second and a half won't be that much of a wait anyways, probably just a "spiky load or something" - might give the impression the game is loading some stuff in the background XD
III. Honestly the EASIEST way around this is to set yourself a big map. As I said above. No more map switching results in no more need to do so many switches to preserve characters' locations. They will stay pinned there even when the player is on the other locales, and the switches will apply over the entire map, so if you need to go to event A in a "map" then to tell B in another "map" it's easily possible now, because switches are per map, and you basically have a big map. With small, different maps you end up with A saying "Speak to B", you switch maps and B will be like "Who the **** is A, I don't know any A". Carrying event functionality is easy to do from one map to another, with giving player an item, or setting a variable, and setting the event on the other map with a conditional based on the new value. So... did you speak to A in map 1? No? My variable is 0, so... "You haven't spoken with A... You liar..." Oh, you really spoke with A? Then variable set to 1 (or you can increment it for a fun fact). Player goes to B and ... use this: Show text "Oh, so you spoke with A \v[variable id] times before? Oh... \|\| Good!" Then add the other functionalities. Now, before I end this little wall post, \v[x] is a function you can add in a Text box so the system reads the value of the variable with that id. So if I have a variable that counts how many times player did something I just increment a variable that counts how many times the player runs an event (basically, that's what it is). So I will have an NPC say "You have done this \v[23] times!" - which will read the value of variable id 23 (you don't put the 0s in front of it). The \| is a text function that says "wait 1 second before showing next text". I abuse this to make text flow more natural, but I wouldn't advise you to do it if you don't feel like it.
Now, last tip: When drawing maps - you can hold right click while having Map button selected (not events button). Then you can select as much as you want from the map. Go somewhere blank in the map and click

It will copy your selection there. Use it in case you need to replicate portions of map. Like for rooms, before setting the individual pieces of furniture, like in hotels, rooms have same size, but won't necessarily look the same. They do look the same in your case? Cool, Use this option after you've made a first map. Also use the other draw functions afterwards: Pencil instantly pastes your selection, the rectangle will draw it from down upwards (starting from the corner near your cursor, that's how you insert you paste option, a bit trickier to master, but it's good if you need only part of the selection and you control how much), circle does the same but in a "rectangular circle" way that looks too awkward for me to actually use. The paintbrush fills all the tiles of same type with the new selection (don't use it with selections, funny results. Instead change a tile with another: no longer want a red carpet tile in the room? Select the other color (just 1 tile, as you normally do), press the paintbrush and click on the red carpet. Magical change. NOTE: doing this won't change tiles that have "partial" furniture on. By "partial" I mean tables and other pieces that still show the tile below them (they are basically put one over the other)).