2013-05-22 47 views
0

使用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)我想要做一些具體的操作情況:怎麼能我發現了這個?

回答

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

我在OSX上運行Firefox 28,它不會調用錯誤()如果回調用戶拒絕訪問地理位置api。

一種可能的解決方案是「反向」邏輯。

firstDoSomething(); 

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

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