Me respondo a mi mismo xD
el error era en esta linea :                     tileRect.y = (TileId / tileH) *tilesize;
donde debia ser :                         tileRect.y = (TileId / tileW) *tilesize;
PERO aun me queda un problema por si alguien me puede ayudar, como dibujar un mapa con tiles con espacio y margen.
Y tambien como ver el tema de las colisiones.
Bueno aca les dejo el codigo porsi las moscas
#include <TmxParser/Tmx.h>
#include <SDL/SDL.h> 
#include <SDL/SDL_image.h>
const short SCREEN_WIDTH = 555;
const short SCREEN_HEIGHT = 555;
const short DEPTH = 16;
int main() {
	SDL_Surface* screen = NULL; /*pantalla*/
	SDL_Init( SDL_INIT_VIDEO );
	bool gameover = false;
	SDL_Event event;
	/*SDL_SWSURFACE Crea superficie de video en memoria de sistema*/
	screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, DEPTH, SDL_SWSURFACE ); 
	
	Tmx::Map *map = new Tmx::Map();
	map->ParseFile("./example/untitled.tmx");
	if (map->HasError()) {
		printf("error code: %d\n", map->GetErrorCode());
		printf("error text: %s\n", map->GetErrorText().c_str());
		return map->GetErrorCode();
	}
	
	SDL_Rect tileRect;
	SDL_Rect mapRect;
	const Tmx::Tileset *tileset;
	for (int i = 0; i < map->GetNumTilesets(); ++i) {
		tileset = map->GetTileset(i);
		if (tileset->GetTiles().size() > 0) {
			// Get a tile from the tileset.
			const Tmx::Tile *tile = *(tileset->GetTiles().begin());
		}
	}
		SDL_Surface *Image = IMG_Load(tileset->GetImage()->GetSource().c_str());     
		int tilesize= tileset->GetTileWidth();
		int img_W = tileset->GetImage()->GetWidth();
		int img_H = tileset->GetImage()->GetHeight();
		int tileW = img_W / tilesize;
		int tileH = img_H / tilesize;
		int tileMargin = tileset->GetMargin();
		int tileSpace = tileset->GetSpacing();
		int num_layers =map->GetNumLayers(); 
		for (int i = 0; i <num_layers ; ++i) {
			const Tmx::Layer *layer = map->GetLayer(i);
			int map_ancho=layer->GetWidth();
			int map_alto=layer->GetHeight();
				for (int x = 0; x < map_ancho; x++) {
					for (int y = 0; y < map_alto ; y++) {
						int TileId = layer->GetTileId(x, y);
						if(TileId==0){
							TileId--;
							continue;
						}
		              
						tileRect.x = (TileId % tileW) *tilesize;
						tileRect.y = (TileId / tileW) *tilesize;
						tileRect.w= tilesize;
						tileRect.h= tilesize;
						mapRect.x= x* tilesize;
						mapRect.y= y* tilesize;
						SDL_BlitSurface( Image, &tileRect, screen, &mapRect );
						SDL_UpdateRect(screen,0,0,0,0);
				}
			}
	}
	while(!gameover){
	/* Verifica eventos */
		if (SDL_PollEvent(&event)) {
			switch (event.type) {
				case SDL_QUIT:
					gameover = true;
					break;
				case SDL_KEYDOWN:
					switch (event.key.keysym.sym) {
						case SDLK_ESCAPE:
						case SDLK_q:
							gameover = true;
							break;
					}
					break;
			}
		}
	}
	return 0;
}
compilar en linux: g++ -o main TmxParser_Test.cpp -ltinyxml -lz -ltmxparser -lSDL -lSDL_image
Esta bastante desordenado y varias cosas se pueden optimizar pero lo hize para pruebas xD.