I am currently creating an application (iPhone/iPad/Android) that uses a map to display houses offered by a rental company. The app is free on all stores.
I have read through the terms and know of this clause:
Use of the Google Geocoding API is subject to a query limit of 2,500 geolocation requests per day. (User of Google Maps API for Business may perform up to 100,000 requests per day.) This limit is enforced to prevent abuse and/or repurposing of the Geocoding API, and this limit may be changed in the future without notice. Additionally, we enforce a request rate limit to prevent abuse of the service. If you exceed the 24-hour limit or otherwise abuse the service, the Geocoding API may stop working for you temporarily. If you continue to exceed this limit, your access to the Geocoding API may be blocked.
The rental company has only about 60 locations. So only individuals in the region will be using the app. I am pretty sure that I could squeak by with only 2,500 request a day but it seems risky.
I have also read through all of the Google API for business FAQ:
For customers who need enhanced features such as advanced geocoding, added support, and full control over advertising, we offer Google Maps API for Business. Google Maps API for Business also delivers the service and support enterprise organizations need when incorporating maps into customer facing websites or mission critical internal applications.
I do not need advanced geocoding, added support, or full control over advertising.
This is what makes we worry the most:
Google Maps API for Business is extremely cost-effective, starting at just $10,000 per year. Pricing is based on the number of map page views for externally facing websites. For internal uses, it is based on page views or number of vehicles being tracked. Please contact us for more information.
$10,000!!! There is no way that I or the rental company could afford this as they are small and would never use it outside the app.
Here are some except from the terms document that are interesting. Maybe someone could shed some light on it.
`9.1 Free, Public Accessibility to Your Maps API Implementation.
9.1.1 General Rules.
(a) Free Access (No Fees). Your Maps API Implementation must be generally accessible to users without charge and must not require a fee-based subscription or other fee-based restricted access. This rule applies to Your Content and any other content in your Maps API Implementation, whether Your Content or the other content is in existence now or is added later.
(b) Public Access (No Firewall). Your Maps API implementation must not (i) operate only behind a firewall; or (ii) only on an internal network (except during the development and testing phase); or (iii) in a closed community (for example, through invitation-only access).
9.1.2 Exceptions.
(a) Enterprise Agreement with Google. The rules in Section 9.1.1 (Free Access, Public Access) do not apply if you have entered into a separate written agreement with Google (such as a Google Enterprise agreement) or obtained Google's written permission.
(b) Mobile Applications. The rule in Section 9.1.1(a) (Free Access) does not apply if your Maps API Implementation is used in a mobile application that is sold for a fee through an online store and is downloadable to a mobile device that can access the online store.
9.1.3 Examples.
(a) You can require users to log in to your Maps API Implementation if you do not require users to pay a fee.
(b) You can charge a fee for your Maps API Implementation if it is an Android application downloadable to mobile devices from the Android Market.`
What would you do?
EDIT
I have been looking for some possible work arounds. In the iOS version, I am thinking about using CLGeocoder. Which if I understand correctly, only works in iOS 5. So I guess I still need a solution for all the devices that are not running iOS 5. :(