首先最基础的你得学会遍历tilemap
用get_used_rect,for i:for j:get_cell,你就能获得一个tilemap上所有tile的id信息(而不需要先绘制出来缩小再截图),也就能把这些信息全部绘制在一个tileset不一样的另一个tilemap上(这样你也不需要用到viewport就能做出一个大地图和一个小地图了)
你需要自己去看TileMap的API,这样你才知道tilemap都能用来做些什么。

但很可惜的是,这样绘制出来的小地图性能很差,很卡很卡。如果可以的话,把小地图存在图片上比存在tilemap上要合理地多。以下是Image的API,这个重点你至少得学会。学会了你就能在_ready()的时候把整张图存下来,在角色移动的时候根据角色轨迹动态地存下来。

然后是ImageTexture的API……Image是没法直接扔给节点画出来的,要经过这个中间步骤;

紧接着是Control的API,ImageTexture很适合添加给TextureRect作为纹理,然后TextureRect继承自Control,有这些相关的处理鼠标输入的方法;

不想用Control的_gui_input()也可以直接用简单的Input算了,输入这一整章文档都可以看一看啊。

看了这些,最后也还是需要你自己做好计算打好代码,算出来点击哪里对应于传送到哪里。然后关于传送和点击位置的对照信息,可以直接用dictionary啥的存下来,也可以类似于存轨迹那样用颜色来保存。