I dont see your hero. I dont see the tilemap. I dont see how they interact. Lets suppose its a platform.
I would like to give you 2 things 2 think over.
First.
Speed is set as pixels/second. (I would welcom an action that sets speed/dt)
What importand in this is ... to know how many pixels something with a certain speed moves between the same event in the sheet.
The time it takes to check again an event you can read in the expression dt.
Now suppose an object is 1 pixel in size. And it moves at a speed 200 pixels/second. (= is rather slow)
Suppose you have an 'on collision' event.
Suppose the object it has to colide with has also a size of 1 pixel.
Suppose it runs at 50/second.
Now every dt (tick) this object moves 200/50 = 4 pixels. If the objects that it has to collide with is on a position%4 not = 0, there can be no collision dedected. Moving object is just never ever on those positions.
So, Size Matters.
Secondly.
Push-out-off-Solids. (PooS). Actualy, platform, bullet, physics all those behaviors depend on PooS.
Platform by example. The hero jumps. Falls. And then, at one moment, he actual wil overlap the Solid with some pixels. Now the PooS routine starts. It moves the hero back up till its out of the Solids. And that is how the hero walks on the Solids.
If you use a tilemap. Each tile has its collision map. Now again. Hero jumps. Falls down. TIll that moment he will overlap the tilemap. But now the hero is overlapping (depending on the speed as explained) a lot of tiles (because they are 1 pixel tiles). And they each start the PooS. And probaly some dont know whats up or down. Resulting in weird calculations, and they are probaly not even all calculated when the next tick arrives.
Again, Size Matters.