Use a variable as a condition.
On player touched, var = 0, > open map, set var=1
On player touched, var =1 > close map, set var = 0
You might need to put a small wait in though as due to C2's top down structure, it'll set the variable true for both events reading down.
You're right that simply setting the object invisible will not disable it. For a button you'll need to set it disabled. For a sprite you can disable it's collision.