I have thought about this once before.
I would not use a web service. but I would use a pretty simple image.
This image is taken from
http://www.vectorworldmap.com/vectormaps/vector-world-map-v2.2-blank.jpg
- I would map lat/long over this map for know points so you know your map is correct.
- For any give point, I would locate the pixel location on this map and figure out the colour (php can do this).
- If the colour is white, I would say it is sea, black = land.
- if you dont want lakes, open the map up and color all the lakes black.
If you need super high res maps, I would get a very large map and divide it up in a grid of smaller images that you can load.
If you need to make this system super duper fast.
I would can this image pixel for pixel and create a database of this stuff so you can look it up pretty quick. But already this image below actually acts as an excellent database that can be easily checked or changed.
Did you want oceans and lakes?
Curious to know where you are going with this, as I like this problem.
John.