This problem had been plaguing me for months, and none of the suggestions I tried online helped. I finally tried looking in the console, and found lots of lines like this:
9/3/14 10:58:57.512 xpcd[206]: com.apple.geod[733]: registration request failed: (0x11, 0x0) Could not obtain real path to the container root (~/Library/Containers/com.apple.geod/Data): The operation couldn’t be completed. No such file or directory
9/3/14 10:58:57.703 com.apple.launchd[1]: (com.apple.geod[733]) Job appears to have crashed: Illegal instruction: 4
9/3/14 10:58:57.703 com.apple.launchd[1]: (com.apple.geod) Throttling respawn: Will start in 10 seconds
I tried rm -r ~/Library/Containers/com.apple.geod and then re-launched Maps, and much to my delight, I was finally seeing actual maps!
The console showed my map tiles being recreated, and fixing permissions on the com.apple.Maps container (which directory I had earlier tried deleting, based on other online suggestions):
9/3/14 11:03:34.284 com.apple.geod[800]: /SourceCache/GeoServices/GeoServices-702.15.12/GEOTileDBWriter.mm:203 recreating tile database because manifest URL changed
9/3/14 11:03:34.284 com.apple.geod[800]: /SourceCache/GeoServices/GeoServices-702.15.12/GEOTileDBWriter.mm:406 Recreating tile database
9/3/14 11:03:50.311 xpcd[206]: restored permissions (100600 -> 100700) on /Users/jim/Library/Containers/com.apple.Maps/Container.plist
It seems that removing both of those got rid of whatever corruption had been causing this long-standing problem. I hope this might help someone else.