I had exactly the same. Half in 01:50 feeling great, got to 19miles and was looking at 3:50 maybe sub 03:45. Then.. cramp at 19.5 miles, calves for me. Had to adopt a hobble/ stop/ hobble approach to the rest of the race. Finished in 04:11:24.
I never usually get cramp so I don't know what I did different. Ended up 'enjoying' the last 7 miles as I forgot any time targets and was just amazed how much support you get when you're one of the 'strugglers'!
All I'm left with is that nagging voice telling me I have a sub 03:45 marathon in me (last year I did my first marathon in 03:58 so at least I got the sub 4 monkey off my back straight away).