Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript地理定位API和缺少的回调_Javascript_Callback_Geolocation - Fatal编程技术网

Javascript地理定位API和缺少的回调

Javascript地理定位API和缺少的回调,javascript,callback,geolocation,Javascript,Callback,Geolocation,使用Javascript地理位置API时,会以以下方式提示用户: “是否要使用当前位置?” 可能会发生三件事: 1) 用户选择OK 2) 用户选择“不允许” 3) 出现错误或超时 目前似乎缺少可用的API,因为我可以通过回调异步管理(1)和(3),但不能(2): 假设在(2)的情况下,我想执行一些特定的操作:如何检测到这一点?所有情况都可以通过错误回调处理: navigator.geolocation.getCurrentPosition(成功、错误、选项) 参数 错误可选 一个可选的回调函

使用Javascript地理位置API时,会以以下方式提示用户:

“是否要使用当前位置?”

可能会发生三件事:

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

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

假设在(2)的情况下,我想执行一些特定的操作:如何检测到这一点?

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

navigator.geolocation.getCurrentPosition(成功、错误、选项)

参数

  • 错误
    可选

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

位置错误

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

  • code

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

例如:

navigator.geolocation.getCurrentPosition(..., function (e) {
    switch (e.code) {
        case 1 : // permission denied
        case 2 : // position unavailable
        case 3 : // timeout
    }
});

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

一个可能的解决方案是“颠倒”逻辑。

navigator.geolocation.getCurrentPosition(..., function (e) {
    switch (e.code) {
        case 1 : // permission denied
        case 2 : // position unavailable
        case 3 : // timeout
    }
});
firstDoSomething(); 

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

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