In my game, does my player object control the movement, or does the map object control it? (Or some other object?) 

The player doesn't know about the map's contents to stop at solids, interact with objects etc. Am I doing it wrong?

I'm currently dispatching data from a virtual joypad.

**EDIT:**

What if I dispatched movement notifications to my player and had it check with the map before moving, but the player would do the actual moving? Would that work?

**EDIT2:**

At this point I'm thinking about a top down game. Just to clarify, I want the player to move in 4 directions, not 8, and to be centered on the tile which they are standing on.