Here's what I would write (on your singleton script):
extends Node
var player_map_position = null
Then in your project settings, load the script and give it a name. I think you said you did this, but I'm just mentioning it again just to be sure.
Next, in your player script (or in the mini-map), add this:
"Other stuff..."
var singleton = null
func _ready():
"Other stuff..."
singleton = get_node("/root/Map")
if singleton.player_map_position != null:
" Now we need to change the player's position. You may need to change the node path "
$Map/Sprite.global_position = singleton.player_map_position
(I'm assuming Map is the name of your singleton, and that this is added to the script you posted above)
Then, whenever you change scenes, you just add this:
"Other stuff, if there is any"
"You may need to change the node path to the player depending on which scripts changes scenes"
get_node("/root/Map").player_map_position = $Map/Sprite.global_position
"Then change scenes. Example:"
get_tree.change_scene("res://ExampleScenePath.tscn")
And that will set the player_map_position variable right before you change. Because you check in _ready, when you return to a scene with the mini-map, the player will return to the position in the mini-map they were last in.
Let me know if something does not make sense, and I'll do my best to explain.
(It's starting to get late here, so it might be tomorrow when I can reply)