The website I'm working on uses HTML5 geolocation api. It works fine, but I need to know if the feature has been authorized.
navigator.geolocation
only tells if the feature is available. What I want to know is whether the user has enabled it already. Basically, I need to know if the browser will request permission to use the feature. Is it possible?
Asked
Active
Viewed 3,680 times
3

Antoine
- 5,055
- 11
- 54
- 82
2 Answers
6
If the user does not allow your app to use the Geolocation API the methods getCurrentPosition
and watchPosition
will return an PositionError object via the error callback:
void getCurrentPosition(successCallback,
errorCallback,
options);
long watchPosition(successCallback,
errorCallback,
options);
The PositionError looks like:
PositionError {
code;
message;
};
where the possibles values of code are:
PositionError.PERMISSION_DENIED = 1;
PositionError.POSITION_UNAVAILABLE = 2;
PositionError.TIMEOUT = 3;
And more specific:
- PERMISSION_DENIED (numeric value 1) The location acquisition process failed because the document does not have permission to use the Geolocation API.
The documentation here.

Jonathan Naguin
- 14,526
- 6
- 46
- 75
3
There is no check for permanent authorization.
The only thing you can do imho is try to "guess" if the user has authorized by estimate time.
For example:
more than 1,5 seconds to retrieve geolocation -> probably user got to click interface and give auth
less than 500ms -> pretty sure user already give auth

mtt
- 1,697
- 1
- 15
- 20