There are other geocoder services based on open source/open street map data and with these other services there are (i think but you'd be advised to check!) no usage terms and conditions.
Sounds good but these other services vary greatly in quality of results, speed of query processing and general availability of the service.
That is thier data could contain errors and their servers could be slow and overloaded.
Take a look at the
OSMBonusPack, it's a library i plan to wrap for B4A as an add-on for the OSMDroid library.
It has geocoding and reverse geocoding functionality, look at the Wiki overview page
Overview - osmbonuspack - Why this "OSMBonusPack", and what does it give. - A third-party library of (very) useful additional objects for osmdroid - Google Project Hosting, scroll down to
Geocoding and Reverse Geocoding.
Note the WARNING!
I've completed the B4A wrapper library for the directions service but didn't plan to wrap the geocoder stuff as i assumed the Google Android Geocoder would be the better choice.
If either of you would like me to look at creating a wrapper around the OSMBonusPack geocoder and reverse geocoder classes i can do that.
Take a look at the source code for the
GeocoderNominatim class.
This is the class that uses either the OpenStreetMap Nominatim or the MapQuest web services.
The
getFromLocation and
getFromLocationName methods are the methods of interest.
The OSMBonusPack author has written these 3rd party geocoder classes to mimic the Android Geocoder methods so you'd not have to change much code to switch to 3rd party geocoding.
Probably the best option is to query the Google Android Geocoder, if that fails then have these 3rd party services available as a fallback.
Shall i create the 3rd party Geocoder library from the OSMBonusPack class?
Is the OSMBonusPack directions service of use in your apps?
(I've already wrapped the directions service into a B4A library).
Martin.
PS Are either of you using OSMDroid?