- From: Andrei Popescu <andreip@google.com>
- Date: Tue, 28 Jun 2011 15:22:32 +0200
- To: Doug Turner <doug.turner@gmail.com>
- Cc: public-geolocation <public-geolocation@w3.org>
Hi Doug, Thanks for the email! On Mon, Jun 27, 2011 at 8:33 PM, Doug Turner <doug.turner@gmail.com> wrote: > Firefox has basically implemented the Address attribute on the > Position object. This was done for a few reasons. > > What we have learned is that accurate geocoding is much more expensive > than just geolocation. Many system APIs (like Android), have separate > APIs for discovering where you are, and converting that to something > that looks like a mailing address. I think we want to reflect this > and have a new API that allows for geocoding - and leave the Address > attribute on the position object not formally defined. > > Something like: > > interface GeoCoder { > void getAddress(in Position position, in AddressCallback > successCallback, [Optional] in AddressErrorCallback errorCallback, > [Optional] in AddressOptions options); > }; > > [Callback=FunctionOnly, NoInterfaceObject] > interface AddressCallback { > void handleEvent(in Address address); > }; > > Where Address is what we currently have defined, but includes a timestamp. > > I am not sure if we need AddressOptions -- it might be interesting if > one could specify accuracy desired, but I am tempted to just assert > that the implementation should give the best available result. > This came up today in the Geolocation face-to-face meeting and we filed Issue-96. We completely agreed that the API should be designed so that an implementation would avoid doing reverse-geocoding unless a Web application explicitly requested it. However, I think there are a few issues with the solution you propose: 1. The new method requires an extra-round trip to the reverse-geocoding server, which adds latency and may therefore be problematic for a class of use-cases where speed is essential. For the rest of the use-cases that don't have a problem with the extra latency, there are already a number of reverse-geocoding services available on the Web today. So it's not entirely clear what advantages your proposal has over using such an existing Web service. 2. Following from 1 above, this approach leaves it to the Web application to decide how often to call the reverse-geocoding method. We think it's safer to let the UA handle this as the UA is probably in a better position to make sure it does not accidentally overwhelm the reverse-geocoding backend with requests for Address objects. For instance, a UA could implement a throttling mechanism such as exponential backoff in order to protect the backend in critical cases. 3. The approach is prone to scraping: a rogue Web application can crawl the lat/long space to scrape all the data in the reverse-geocoding server. With your proposal, it would be hard to defend against this. Instead of this, we think the problem you described can be better solved with the use of a new PositionOptions attribute: "requestAddress". This would be a smaller API change while also not suffering from the caveats explained above. Steve will follow-up with an email about this. Thanks, Andrei
Received on Tuesday, 28 June 2011 13:22:57 UTC