Sending Map data to client

I am using Kryonet - https://github.com/EsotericSoftware/kryonet to make a game multi-player. Created a server that handles player connections, position and also a list of entities (obstacles). The client uses LibGDX. This all works well, have tested it on EU and USA servers, I am in the UK, with around 5 connections.

The game has randomly generated tile maps which are stored as JSON, I zipped the file to decrease size its currently around 230kb. I tried to split this up into multiple smaller packets and send over TCP but get Buffer Overflow issues. Then tried to send over UDP but get packet loss.

So my questions are:

Should I be storing the map differently?
Should I be streaming the data differently?
Create a method to use UDP but guarantee delivery?
Split the map into small chunks and download them when needed?

Any advice is appreciated, failing to fix this I will go with a static map for the time being.