You can set a player’s spawnpoint with Player.RespawnLocation.
For dividing the map into zones, look into the ZonePlus module: ZonePlus v3.2.0 | Construct dynamic zones and effectively determine players and parts within their boundaries
So some combination of “when Player enters a zone, set Player.RespawnLocation to this SpawnLocation instance” should achieve what you want.