的Javascript地理位置API和缺乏回调

问题描述:

使用JavaScript地理位置API,用户以这种方式被提示:“你想用你的当前位置”的Javascript地理位置API和缺乏回调

三件事情可能会发生:

1)用户选择确定 2)用户选择“不允许” 3)有错误或超时

可用的API似乎是目前所缺乏的,因为我可以管理(1)和(3)asyncronously有回调,但不(2):

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

假设在(2)我想要做一些具体的操作情况:怎么能我发现了这个?

所有病例可以通过错误回调处理:

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 
    } 
}); 

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

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

firstDoSomething(); 

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

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(doSomethingWithPosition); 
}