Looking at the web GeoLocation API documentation there are two ways to get location – getCurrentPosition to get a quick reading of location and watchPosition to monitor the changes to the position.
What I’m looking for is a way to get a location reading which is quite accurate, as quickly as possible. I think the ideal would be to use an accuracy threshold on the getCurrentPosition call – and the success handler would be called when the threshold is reached or the timeout exceeded (with as accurate as possible a result).
This doesn’t already exist, right? Presumably it would be fairly straightforward to implement this by just wrapping the watchPosition method to stop checking after a timeout or the threshold is reached. I will use this approach (and intend to post the code) if no-one is aware of a built in method to do this…
No built in function. I’ve found that a timeout is better than a set accuracy. Often times on an iPhone the accuracy will be no better than around 100 meters, so continuing to check for better is wasteful. Using
watchPosition()has worked best and it seems to triangulate, so after three readings it rarely gets better. I just wait five seconds and stop.Demo: http://jsfiddle.net/ThinkingStiff/3k859/
HTML:
Script: