Sounds like you should take a look at the Google Maps API. It's very powerful and does exactly what you need.