I want to use geo coding services in my site which are the APIs available for this, Java based solutions will be preferred and I want to use this in a commercial project so please suggest appropriate options i.e. APIs which can be used in such projects freely..
Before asking this question I have tried searching on net and found that few popular geoCoding APIs are the ones from Google and yahoo. And few answers in SO suggest using Google API (Which seems very popular one), before deciding I want to know is their any other option and what are the available solutions for this ?
Even A Link to some blog/ site which contains detailed analysis of all these sites will be of great help.
Available Solutions for the Address / ZipCode to (latitude, longitude) mapping are ...
Google API, http://code.google.com/apis/maps/documentation/geocoding/ ) The most popular due to Google’s name. Extensive support available on the internet (less development time). Alas! not available freely for commercial usage. The free version has 2500 queries/day limitations. (http://code.google.com/apis/maps/documentation/geocoding/) There is one clause in “Usage Terms” which says the result must be displayed in google maps, reference http://code.google.com/apis/maps/documentation/geocoding/#GeocodingRequests terms and conditions are mentioned here. http://code.google.com/apis/maps/terms.html#section_10_12
Nominatium, (http://wiki.openstreetmap.org/wiki/Nominatim ) A less common organization which provides an open source, free ware solution for the address to (latitude, longitude) mapping. Can be also used in commercial projects. Their are no restrictions for number of queries per day and no hidden clauses in “usage terms”. Since the organization itself is not much popular, less support is available.
Yahoo API, http://developer.yahoo.com/geo/placefinder/ Another popular API like google’s but some what more available. supports upto 50000 requests per day. Like google extensive support is available. Yahoo encourages us to use the “powered by yahoo logo” but doesn’t force us for that. ( http://info.yahoo.com/legal/us/yahoo/api/api-2140.html ) Can be used for commercial purposes (I have read Yahoo Terms and doesn't find any clause which restricts us in doing that, reference http://info.yahoo.com/legal/us/yahoo/maps/mapsapi/mapsapi-2141.html ).
YQL (Yahoo Query language see:- http://developer.yahoo.com/yql/ )
A SQl based query language which queries yahoo web service. for example if we have a zip code
we can write a YQL as [ select centroid from geo.places where text="Enter some pin code here"].
Yahoo encourages us to use YQL in commercial applications. (http://developer.yahoo.com/yql/faq/ )
Most number of allowed queries as compared to all other options i.e. 20,000 calls/hour/IP and 100,000 calls/day/key. (see http://developer.yahoo.com/yql/faq/ ), Support available for YQL is quite good, see the links.