Yes, i've done this before.
Essentially you need to split the map up into small segments that are larger than the screen, then reposition the segments as the player moves between them.
Example, imagine your character walks from left to right. You would have 3 segments to the map, 1, 2 and 3.
The character starts on segment 2, when the player reaches segment 3, segment 1 repositions after 3, so the map now looks like, 2,3,1. etc. When he crosses to 1, segment 2 repositions, so 3,2,1 etc.
It gets a bit more complicated with all 4 directions, but the concept is the same.
Also all objects need to be pinned to a segment when it repositions, or else simply position objects on a segment based on that segments relative x,y position.