I have a website with a join form that asks you for your country and then city.
When you type your city it sends AJAX calls back to a MySQL DB I have and this returns 10 possible results in a div under the input that you can select from or type further for a more refined return.

This works fine for one country (I purchased this DB) but I need to expand it for the entire world.
I can purchase a DB for the world (country, city, suburb, postcode, geo co-ordinates) but its not cheap so I wanted to ask.
-
Is there a way to do the same thing using Google Maps, Yahoo or Bing? Can I have users enter a country city location and have the GEO CO-Ords returned? Is it possible to do this with the AJAX keyup event returning possibilities?
-
How to other people/sites go about this.
Note: I should also explain why I need this. The site is for online dating and I need to do radius searches. Eg: search for other members within 10KM or 20KM from where I am so I need GEO CO-Ords for each member.
Any advice would be greatly appreciated.
I have used Geonames in my previous geo-based project, what I did was:
To make a query quick enough for your auto-complete input form, you might want to reduce the data size of the cities table by eliminating less populated cities by using “cities1000.zip” (which stands for “all cities with a population > 1000). I used this solution and the search speed was at least 1000x times faster.
And a quick answer for your “radius searches”, you can use these Reverse Geocoding Webservices from Geonames as well.