0

使用 Javascript 地理定位 API 以这种方式提示用户:

“你想使用你当前的位置吗?”

可能会发生三件事:

1) 用户选择 OK 2) 用户选择“不允许” 3) 出现错误或超时

目前似乎缺少可用的 API,因为我可以通过回调异步管理 (1) 和 (3),但不能管理 (2):

navigator.geolocation.getCurrentPosition(
        function(position) {
            alert("You pressed OK");
        },
        function(error) {
            alert("There is an error");
        }
);

假设在(2)的情况下我想做一些特定的操作:我怎样才能检测到这个?

4

2 回答 2

0

所有情况可以通过错误回调处理:

navigator.geolocation.getCurrentPosition(success, error, options)

参数

...

  • error 可选的

    一个可选的回调函数,它将PositionError对象作为其唯一的输入参数。

...

PositionError

PositionError对象是具有以下属性的任意 JavaScript 对象:

...

  • code

    代表错误代码的数字。它可以是(1) 权限被拒绝,(2) 位置不可用,或(3) 超时

...

https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.geolocation.getCurrentPosition

例子:

navigator.geolocation.getCurrentPosition(..., function (e) {
    switch (e.code) {
        case 1 : // permission denied
        case 2 : // position unavailable
        case 3 : // timeout
    }
});
于 2013-05-22T13:41:50.080 回答
0

我在 osx 上运行 Firefox 28,如果用户拒绝访问地理位置 api,它不会调用 error() 回调。

一种可能的解决方案是“反转”逻辑。

firstDoSomething(); 

var doSomethingWithPosition = function(pos) { ... };

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(doSomethingWithPosition);
}
于 2014-04-04T10:15:41.013 回答