Javascript地理定位API和缺乏回调

时间:2013-05-22 13:23:31

标签: javascript callback geolocation

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

“您想使用当前位置吗?”

可能会发生三件事:

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

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

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

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

2 个答案:

答案 0 :(得分: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
    }
});

答案 1 :(得分:0)

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

一种可能的解决方案是&#34;反向&#34;逻辑。

firstDoSomething(); 

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

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