Here is some information regarding your questions. Reverse geocoding is fine, but storing the information in the manner you describe would be against the TOS. You are limited to 2,500 requests per day for your site, so if you are planning on being within that limit then you should be fine.
Use of the Google Geocoding API is subject to a query limit of 2,500 geolocation requests per day. (User of Google Maps API Premier 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.
Note: the Geocoding API may only be used in conjunction with a Google map; geocoding results without displaying them on a map is prohibited. For complete details on allowed usage, consult the Maps API Terms of Service License Restrictions.
Also take note of these:
10.1 access or use the Service or any Content through any technology or means other than those provided in the Service, or through other explicitly authorized means Google may designate;
10.3 pre-fetch, cache, or store any Content, except that you may store limited amounts of Content for the purpose of improving the performance of your Maps API Implementation if you do so temporarily, securely, and in a manner that does not permit use of the Content outside of the Service;
--
You received this message because you are subscribed to the Google Groups "Google Maps JavaScript API v3" group.
To post to this group, send email to google-map...@googlegroups.com.
To unsubscribe from this group, send email to google-maps-js-a...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-maps-js-api-v3?hl=en.
It's 2500/day per *client*, isn't it? If the geocoding is done
server-side, then that's 2500 for the site; if each client does it,
it's likely to be more than enough.
My issue about the proposal is with getting the user's address from
the map. Reverse-geocoding is notoriously inaccurate! Why not get them
to enter their address (which can then be structured for your
database), and then get them to show it correctly on a map? Geocode
the address, which will put a marker in approximately the right place,
and then ask them to move it to exactly where it should be.
See http://maps.huge.info/pinpointaddress.htm for an example of this
functionality (Version 2, but it illustrates the user interface
nicely). The user has control of his data throughout the process: what
address he enters and where he is.
Doing this also means you are not storing reverse-geocode data; in
fact you're not even storing "forward-geocoded" data, because the user
is positioning the marker himself. And you comply with the requirement
to show the geocoder results on a map because that's how the user gets
a marker to move to his correct location.
Geocoding is the process of converting addresses (like "1600 Amphitheatre Parkway, Mountain View, CA") into geographic coordinates (like latitude 37.423021 and longitude -122.083739), which you can use to place markers or position the map. The Google Maps API Family provides two approaches to geocoding:
Not a problem -- a discussion is a discussion. There have been some
remarkably robust discussions about the ToS in the Version 2 Group in
the past; and the same Terms apply to V3. So far, I think, the
consensus has been that the Terms say what they say. Comply with them
and all should be well: if you're not storing Google's data, you're
not storing it.
However: no-one in either Group has offered legal opinion, just a
personal interpretation. Even Google won't comment on the Terms in any
way which might bind the company.
No: you can store anything you like as long as it doesn't come from Google.
So, you can store an address the user has given you; and you can store
some coordinates the user has given you. If you want to link those two
data items, that's up to you.
You can geocode the user's address, thus getting some data from
Google; but then you can't store that data, because that's Google's.
You can geocode the user's address and display that location on a
Google Map, because if you use the geocoder then the Terms of Service
require you to show the location on a map.
In your use-case, the user experience is actually improved by
following the rules. They give you an address (so you can be sure it's
accurate); you geocode it and display a map (so you comply with the
rules); then they give you some coordinates (so you can be sure they
are accurate too). You get accurate data, the user controls what you
are given, and you comply with the Terms. Everyone wins.
--