I assume you have some graphics like that:

So to render a unit exactly behind (north of) a wall you'd need to render line by line instead of layer by layer.
Just create a subclass of TileMap (MyMapRenderer extends TiledMap) and override renderline().
When you call the render method of your MapRenderer set lineByLine to true. This should render the map line by line from top to bottom of the screen and call renderline() each time a line is finished.
You then need to check inside renderline() if your players y position is the same as renderlines mapY (the line which was just rendered) and if thats the case draw your player. Then the render method will continue drawing the rest of the lines and thus rendering the wall over your player.
Code:
class MyMapRenderer extends TiledMap{
//...
@override
public void renderedLine(int visualY, int mapY, int layer) {
//this gets called everytime a line is rendered. lines are rendered from top to bottom
if(player.getY() == mapY){
playerImage.draw(player.getX() * tilesize, player.getY() * tilesize);
}
}
and in your gameloop call
Code:
MyMapRenderer map = new MyMapRenderer(Player player);
// (you need a reference to your players and sprites in your maprenderer)
public void render(){
//set linebyline rendering to true so you have a chance to squeeze your player between the lines
map.render(0, 0, 0, 0, 20, 20, true) ;
}